2009-02-25 17 views
1

J'écris un shader dans GLSL et j'ai besoin de lui transmettre une certaine quantité d'informations. Le seul moyen pratique de transmettre cette information est d'utiliser une texture 1-D.
Je crée la texture et la mise en GL_TEXTURE_MIN_FILTER et GL_TEXTURE_MAG_FILTER-GL_NEAREST
Maintenant, à partir du shader j'ai besoin d'accéder à la texture donc je vais être en mesure d'indexer exactement chaque numéro vecteur 3-valeur que je mets dedans.
Qu'est-ce qu'un moyen sûr de faire cela facilement?
Ce que je cherche est une formule qui prend la taille du tableau et de l'index que je veux et donne le nombre dans [0,1] qui correspond au texel que je veux.Comment indexer une texture en tant que table de correspondance discrète à partir d'un shader?

Répondre

2
idx/(size-1) 

peut-être? Assurez-vous juste que idx et la taille sont les flotteurs d'abord.

+0

Bien que cela fonctionne (grâce au plus proche voisin), la manière correcte devrait être (IDX + 0,5)/taille. –

1

Je viens de trouver que OpenGL 3.0 rend ce besoin obsolète avec l'introduction des texelFetch() fonctions qui sont également disponibles avec l'extension GL_EXT_gpu_shader4