Bonjour,

Je suis un peu perdu sur la manière de créer une texture float, entre OpenGL 2.0 et OpenGL ES 2.0...

J'avais l'habitude avec OpenGL de les déclarer de la manière suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, height, 0, GL_RGBA, GL_FLOAT, data);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, width, height, 0, GL_RGBA, GL_FLOAT, data);
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA32F_ARB, width, height, 0, GL_ALPHA, GL_FLOAT, data);
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA16F_ARB, width, height, 0, GL_ALPHA, GL_FLOAT, data);
Le 3em argument étant le format de stockage interne (VRAM), le 7em le nombre de canaux dans l'image source (RAM), et le 8em le format de stockage des canaux l'image source (RAM).

Seulement j'ai l'impression que ces conventions ne sont plus d'actualité dans OpenGL ES 2, le manuel n'est vraiment pas clair à ce sujet... De ce que j'ai compris seul le 8em argument définie le format de canaux du stockage interne (VRAM) ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_FLOAT, data);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_HALF_FLOAT_OES, data);
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_FLOAT, data);
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_HALF_FLOAT_OES, data);
1/ Est-ce que j'ai bien compris les conventions ?
2/ Existe t-il une manière universelle (compatible GL/GL ES) de déclarer une texture float ?
3/ En GL ES, à quoi servent les defines GL_RGBA32F_EXT, GL_RGBA16F_EXT, GL_ALPHA32F_EXT et GL_ALPHA16F_EXT ?
4/ En GL ES, quand on crée une texture FLOAT16, il considère que l'image source est obligatoirement stocké sous forme FLOAT32 ?

Merci !