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:
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).
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);
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) ?
1/ Est-ce que j'ai bien compris les conventions ?
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);
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 !
Partager