Problème étrange - shader multi texturing
Bonjour,
J'ai un problème assez perturbant que je vous expose, j'ai ce code qui dessine un mesh avec 2 textures à l'aide d'un shader:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
void Renderer::draw(MeshBuffer * mb)
{
Material * material = mb->material();
material->beginRender(mRender); //bind un shader, active les textures 1 et 2
mb->vao()->bind(); //bind un VAO
glDrawElements(GL_TRIANGLES, mb->indexSize() , GL_UNSIGNED_INT, 0);
mb->vao()->unbind(); //bind un VAO avec l'id "0"
} |
Ce qui me donne un résultat correct, un cube avec une texture verte et rouge me donne un cube marron.
Le problème arrive maintenant, lorsque j'ajoute une fonction vide :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
void Renderer::draw(MeshBuffer * mb)
{
Material * material = mb->material();
material->beginRender(mRender); //bind un shader, active les textures 1 et 2
mb->vao()->bind(); //bind un VAO
glDrawElements(GL_TRIANGLES, mb->indexSize() , GL_UNSIGNED_INT, 0);
mb->vao()->unbind(); //bind un VAO avec l'id "0"
material->endRender(mRender); //fonction vide
} |
Code:
1 2 3 4
| void Material::endRender(RenderingContext * render) const
{
} |
Mon cube dessiné est alors vert au lieu de marron, aucun mélange ne se fait. Je crois que c'est l'un des mystères les plus grands que j'ai rencontré en programmation, je ne vois pas en quoi une fonction vide appelé sur le CPU pourrait affecté le comportement de la carte graphique.
Si quelqu'un à une vague idée de ce qu'il se passe, je veux bien une explication. :?
(J'ai déjà tout nettoyé et recompilé sans succès.)