Je rencontre des problèmes pour essayer de charger une texture dans la mémoire VRAM. J'utilise OpenGL sur Mac OS X. J'ai une géométrie avec laquelle j'ai réussi le rendu en passant une couleur dans mon fragment shader. Cependant, dès que j'essaie de charger une texture, aucune géométrie n'est rendue et je ne peux voir que la couleur d'arrière-plan. Voici ma texture code de chargement:Aggravation de la texture OpenGL Problème
char imageData[27] = {
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
127, 127, 127,
};
glActiveTexture(GL_TEXTURE0);
GLuint textureID;
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 3, 3, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);
GLint uniform_location = glGetUniformLocation(bundle->GetShaderProgramID(), "texture");
std::cout << uniform_location <<std::endl;
glUniform1i(uniform_location, 0);
glEnable(GL_TEXTURE_2D);
Et voici mon code shader fragment:
uniform sampler2D texture;
void main()
{
vec2 coord = vec2(0.5, 0.5);
//gl_FragColor = vec4(coord, 0.0, 1.0);
gl_FragColor = vec4(texture2D(texture, coord).rgb, 1.0);
}
Je réalise une partie de ce code est probablement pas nécessaire, mais je l'ai essayé tout ce que je peux penser .
Merci.
BTW, vérifiez toujours les erreurs avec glGetError. Si vous avez une erreur, le rendu peut disparaître. – alxx