Précédent   Forum des professionnels en informatique > Applications > Développement 2D, 3D et Jeux > API graphiques > OpenGL
OpenGL Forum d'entraide sur le développement en OpenGL. Avant de poster -> FAQ OpenGL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2011, 16h14   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 36
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 36
Points : 12
Points : 12
Par défaut 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.)
Awakening est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 18h08   #2
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 36
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 36
Points : 12
Points : 12
Je crois avoir trouvé mon problème.
Pour faire du multi texturage j'envoyais un tableau de 4 entiers représentant 4 sampler2D, parmi, j'en initialisais que 2, du coup les 2 autres ne l'étaient pas. Le problème dépendait donc de ces 2 valeurs aléatoires/non initialisées.

Voilà, je crois que c'est tout.
Awakening est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h36.


 
 
 
 
Partenaires

Hébergement Web