OpenGL trop lent pour la 2D !!!
Salut a tous je suis nouveau sur le forum :)
cela fait plusieurs jour que je test les fonctions 2D d'opengl (glDrawPixels,
glCopyPixels,glRasterPos2i,glReadPixels) etc...... ,
Je suis trés decu des performances 2D d'opengl :( :( , afficher des 'tiles'
est vraiment trop lent :cry: .
Il existe une technique rapide pour afficher des 'tiles' avec les fonctions
glTexCoord2f et glVertex3f.
exemple:
glBindTexture(GL_TEXTURE_2D, textureID[0]);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex3f(1, 0, 0);
glTexCoord2f(1, 0); glVertex3f(0.5, 0.5, 0);
glTexCoord2f(1, 1); glVertex3f(0.5, -0.5, 0);
glTexCoord2f(0, 1); glVertex3f(1, 1, 0);
glEnd();
la encore je trouve qu'il y a beaucoups de contraintes et cette tech
nique est loin d'etre efficace, le code deviens vite assez gros pour pas
grand chose.
j'ai passer beaucoup de temps sur google pour essayer de trouver des
exemples de jeu 2d, scrolling parallax, multi directionnel, horizontal
vertical,a base de 'tiles', en opengl et vu le peu de resultats j'en conclus
que OpenGL pour la 2d c'est de la m.......
Je me rappel de l'époque ou je codais en assembleur sur amiga, en
quelques lignes je pouvais exprimer toute la puissance du blitter ou du
copper.
a l'époque des processeurs aux gigaherz et des API je me dis qu'il y a une certaine régression, on nous laisse de moins en moins la possibilité
de bidouiller nos puces (pour la compatibilité des programmes ??), on
est cantonner dans un schéma.
me reste t'il une seule solution ? . coder toute mes fonctions blitter en C
ou assembler, les utiliser dans un buffer pour ensuite l'injecter dans la
carte graphique.
j'attend vos avis sur les techniques efficaces pour faire de la 2D comme
au bon vieu temps. que ce sois en assembleur ou en C.
merci
p.s : désolé pour les fautes de francais :oops:
Re: OpenGL trop lent pour la 2D !!!
Citation:
la encore je trouve qu'il y a beaucoups de contraintes et cette tech
nique est loin d'etre efficace, le code deviens vite assez gros pour pas
grand chose.
Je trouve plutot que tu n'as plus les mêmes contraintes, les cartes graphiques et les processeurs de nos jours ont tellement de fonctions que les utiliser c'est un bras de fer inimaginable surtout en assembleur
essayes un peu d'afficher un sprite en prenant en compte que ton processeur peu intégrer des technologies telles que MMX, 3DNOW!, SSE, SSE2, SSE3, et j'en passe, et ta carte graphique à qui tu dois passer tes pixels en BGRA si c'est une ATI, RGBA si c'estune NVIDIA, ARGB si c'est une autre marque, les pixels shaders à activer ect, bah oui les drivers font tout cela pour toi aujourd'hui et ce sont autant de contraintes en moins
Citation:
j'ai passer beaucoup de temps sur google pour essayer de trouver des exemples de jeu 2d, scrolling parallax, multi directionnel, horizontal
vertical,a base de 'tiles', en opengl et vu le peu de resultats j'en conclus
que OpenGL pour la 2d c'est de la m.......
eh oui, OpenGL à la base est une bibliothèque prévue pour faire de l'imagerie de synthèse en 3D, comme le veux le dicton "qui peut le plus peut le moins" si tu peux faire de la 3D tu peux faire de la 2D en "oubliant" une composante, OpenGL étant à mettre au même niveau de ... Direct3D essayes de faire un jeu 2D comme tu l'entends avec Direct3D et ce sera pareil, de là à dire que c'est de la merde c'est un peu fermé comme raisonnement
Citation:
Je me rappel de l'époque ou je codais en assembleur sur amiga, en
quelques lignes je pouvais exprimer toute la puissance du blitter ou du
copper.
et aujourd'hui tu peux exprimer toute la puissance des nombreux modèles de cartes graphique avec OpenGL
Citation:
a l'époque des processeurs aux gigaherz et des API je me dis qu'il y a une certaine régression, on nous laisse de moins en moins la possibilité de bidouiller nos puces (pour la compatibilité des programmes ??), on est cantonner dans un schéma.
Régression ? non, évolution oui, pour les mêmes raisons que je donnai au début et aussi pour, comme tu dis, la compatibilité, rien ne t'empeche d'attaquer en assembleur ta carte graphique ou ton processeur, seulement le résultat sur un proco sera t-il le même sur un autre (PIII -> PIV -> Athlon -> Athlon64 -> PentiumM...)
Citation:
me reste t'il une seule solution ? . coder toute mes fonctions blitter en C ou assembler, les utiliser dans un buffer pour ensuite l'injecter dans la carte graphique.
Utilises les drivers qui te sont fournis, ils te donnent accès à tout ce dont tu as besoin, C ou C++ ? à toi de choisir, assembleur ? non il n'est pas mort, à toi de savoir où et quand l'utiliser à bon escient, si tu veux vraiment l'utiliser...
Citation:
j'attend vos avis sur les techniques efficaces pour faire de la 2D comme au bon vieu temps. que ce sois en assembleur ou en C.
On est plus au bon vieux temps, si tu veux faire de la 2D comme au bon vieux temps tu le fait sur une machine fixe, comme un amiga un atari ou pourquoi pas une console par exemple, tu n'auras pas de problèmes de compatibilité (encore que ?)
Citation:
p.s : désolé pour les fautes de francais :oops:
Pas grave pour les faute, tant que c'est pas du sms :wink: