Texture non puissance de 2
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:
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