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