Bonjour,
J'ai parcouru un bon nombre de tutorial sur internet qui assurent de devoir utiliser une image dont les dimensions sont puissance de 2 en tant que texture.
Mais aucun tutorial n'explique pourquoi. Ou certains affirment que la carte graphique ne le supporte pas.
J'ai à utiliser des images non carrées, et au moment de réaliser mon programme OpenGL, je ne connaissais pas cette limitation. J'ai programmé l'affichage de la texture de la sorte :
(j'utilise jogl)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 gl.glColor3f(1.0f, 1.0f, 1.0f); gl.glEnable(GL.GL_TEXTURE_2D); textures[currentTexture].bind(); textureRatio = textures[currentTexture].getAspectRatio(); if(textureRatio>=1) { gl.glBegin(GL.GL_QUADS); gl.glTexCoord2f(0, 0); gl.glVertex2f(-textureRatio, 1); gl.glTexCoord2f(1, 0); gl.glVertex2f(textureRatio, 1); gl.glTexCoord2f(1, 1); gl.glVertex2f(textureRatio, -1); gl.glTexCoord2f(0, 1); gl.glVertex2f(-textureRatio, -1); gl.glEnd(); }else{ textureRatio = 1/textureRatio; gl.glBegin(GL.GL_QUADS); gl.glTexCoord2f(0, 0); gl.glVertex2f(-1, textureRatio); gl.glTexCoord2f(1, 0); gl.glVertex2f(1, textureRatio); gl.glTexCoord2f(1, 1); gl.glVertex2f(1, -textureRatio); gl.glTexCoord2f(0, 1); gl.glVertex2f(-1, -textureRatio); gl.glEnd(); } gl.glBindTexture(GL.GL_TEXTURE_2D, 0);
Et je n'ai aucun problème apparent.
Alors ma question,
- Est ce que ce que je fais est contraire à la "bonne programmation" OpenGL ?
- Mon programme est basé sur la rapidité d'affichage, donc je me demandais si cette "méthode" influait sur les performances ?
Merci d'avance
Partager