|
Sujet : [c++/Ogl]Commant afficher une image en 2D? |
| youdontcare |
pour afficher une image 'en 2d', tu passes généralement par un polygone.
de mémoire, sous dx, tu peux passer directement les coordonnées écran (x, y, z, w) avec les matrices world, view, proj à l'identité. il faut que tes coordonnées x, y soient déjà transformées pour le répère du viewport (ie 0..taille du viewport ou -tailleviewport/2 ... tailleviewport/2, me souviens plus).
le mieux (je trouve) est de ne pas zigouiller les matrices view & proj déjà setupées et donc de passer des coordonnées caméra.
donc coordonneesEcranCamera = coordonnesEcran * View.GetInverse()
et du coup, tu spécifies les coordonnées (x, y) dans le repère homogène ( x de -1 à 1, pareil pour y).
/// pour afficher du texte, il y a déjà des fonctions présentes sous DX.
sinon tu peux y aller à fond à fond à fond et faire un polygone par lettre, comme dans quake ou zelda 64 :) |
| youdontcare |
pour afficher une image 'en 2d', tu passes généralement par un polygone.
de mémoire, sous dx, tu peux passer directement les coordonnées écran (x, y, z, w) avec les matrices world, view, proj à l'identité. il faut que tes coordonnées x, y soient déjà transformées pour le répère du viewport (ie 0..taille du viewport ou -tailleviewport/2 ... tailleviewport/2, me souviens plus).
le mieux (je trouve) est de ne pas zigouiller les matrices view & proj déjà setupées et donc de passer des coordonnées caméra.
donc coordonneesEcranCamera = coordonnesEcran * View.GetInverse()
et du coup, tu spécifies les coordonnées (x, y) dans le repère homogène ( x de -1 à 1, pareil pour y).
/// pour afficher du texte, il y a déjà des fonctions présentes sous DX.
sinon tu peux y aller à fond à fond à fond et faire un polygone par lettre, comme dans quake ou zelda 64 :) |
| janoscoder |
tu viens de mettre le doigt sur un problème de OpenGL, c'est qu'il n'est pas vraiment cool pour la 2D (surtout que sur les cartes non pro, y'a pas les imaging extensions).
DrawPixels est la solution la plus directe pour afficher des données qui changent souvent, genre chaque frame, et sont petites (genre du texte)
Copier sur une texture et afficher, c'est clair qu'il faut pas y toucher trop souvent, car le format interne est prfois le résultat d'une traduction du format visible, ce que rend OpenGL aussi peu efficace pour jongler avec les textures.
Mais quand il faut redimensionner, étirer, etc, c'est mieux que glDrawPixels.
Pour le raster pos, même si tu changes l'origine des coordonnées, tu buteras toujours contre le problème de la fenêtre aux cordonnées bizarre, mais en étant propre, tou se gère assez faclement.
sinon c'est glu32.dll qu'il faut trouver pour glu. Un chti google.
Enfin, nvidia, pour promouvoir ses cartes, fait du support développeur, et tu trouveras sur leur site, les .h et tout et tout. |