Envoi d'une texture à un uniform du fragment shader (GLSL 140)
Bonjour,
Je souhaiterais envoyer un ensemble de donnée à un fragment shader, sous la forme d'une texture. À ce que j'ai compris, je suis sensé demander un index de texture, l'activer, y lier mes données, et finalement lier l'index à l'uniform. En pratique je ne récupère que des valeurs nuls du coté de mon shader.
J'ai sans nul doute zappé quelque chose, et je viens donc solliciter votre aide :oops:
Donc, le code du fragment :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| #version 140
in vec3 color; //Object color
in vec3 light; //Light (works, not very well but it works)
in vec4 texCoord; //Texture coordinates
uniform sampler1D tex;
void main()
{
vec3 Color = vec3(texture(tex, 0));
gl_FragColor = vec4(Color * light * 1.9, 1.0);
} |
Voici un exemple de ce que j'ai tenté coté OpenGL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| GLint location = glGetUniformLocation(programID, "tex");
//Ask a new texture id
GLuint texID;
glGenTextures(1, &texID);
//Activate texture
glActiveTexture(GL_TEXTURE0 + texID);
//Load texture
//As you can see, it is != 0 :)
((char*)tex->pixels)[0] = 255;
((char*)tex->pixels)[1] = 255;
glTexImage1D(GL_TEXTURE_1D, 0, GL_R8, 4/*tex->w*/ /*tex->h*/, 0, GL_RED, GL_UNSIGNED_BYTE, tex->pixels);
//Bind texture
glBindTexture(GL_TEXTURE_1D, texID);
//Send the ID to the uniform
glUniform1i(location, texID); |
sans le moindre succès :(