Dessin avec texture

Dessin avec texture

par Roman Eugène Michel Stemplowski,
Number of replies: 1

Bonsoir,

j'essaie de dessiner un sol pour la simulation toupie et quelque chose d'assez bizarre se produit sur tous mes éssais pour le moment. Ainsi le code

  prog.setAttributeValue(CoordonneeTextureId, 0.0, 0.0);
  prog.setAttributeValue(SommetId, -1.0, -1.0, +1.0);
  prog.setAttributeValue(CoordonneeTextureId, 1.0, 0.0);
  prog.setAttributeValue(SommetId, +1.0, -1.0, +1.0);
  prog.setAttributeValue(CoordonneeTextureId, 1.0, 1.0);
  prog.setAttributeValue(SommetId, +1.0, +1.0, +1.0);
  prog.setAttributeValue(CoordonneeTextureId, 0.0, 1.0);
  prog.setAttributeValue(SommetId, -1.0, +1.0, +1.0);


(tiré du tuto graphique) chez moi affiche un triangle, alors que

  prog.setAttributeValue(SommetId, -1.0, -1.0, +1.0);
  prog.setAttributeValue(SommetId, +1.0, -1.0, +1.0);
  prog.setAttributeValue(SommetId, +1.0, +1.0, +1.0);
  prog.setAttributeValue(SommetId, -1.0, +1.0, +1.0);

affiche bien un carré comme souhaité. De plus ce carré n'est visible que par le bas... Alors qu'idéalement il devrait être visible des deux cotés.
Enfin puisque j'avais 4 textures, j'ai choisi de les stocker dans un array<GLuit, 4> mais lors de mes dessins, tout est blanc (donc aucune texture n'est prise en compte) et l’exécution se déroule "normalement" mais l’arrêt du programme en fermant la fenêtre OpenGL s'accompagne toujours sur un seg fault. Encore une fois le code utilisé est le même que dans le tuto graphique au nom de la texture GLuit près :

 prog.setUniformValue("textureId", 0);
 QOpenGLFunctions *glFuncs = QOpenGLContext::currentContext()->functions();
 glFuncs->glActiveTexture(GL_TEXTURE0);
 glBindTexture(GL_TEXTURE_2D, textures[texture]);

où textures est le array<GLuit, 4> et texture un size_t compris entre 0 et 3 inclus.
Merci pour votre aide.
In reply to Roman Eugène Michel Stemplowski

Re: Dessin avec texture

par Deleted user,

Je ne peux pas parler pour les textures, je n'ai jamais travaillé avec. Par contre, c'est normal si tu ne vois qu'une face de ton sol. C'est dû au "backface culling", activé par "glEnable(GL_CULL_FACE);" qui ne dessine que les faces dont les sommets ont été déclarés dans le sens trigonométrique (perçu depuis la caméra). C'est dans le tuto GL.