Historique des modifications - Message

Message #8737

Sujet: Texture Coordinates sur Vertex partagés


Type Date Auteur Contenu
Correction acceptée 12-09-2010 19:00:54 Zorian
Texte original:
Salut, je suis en train de faire un petit moteur 3d utilisant des VBO avec des Index partagés. Pour ceux qui ne conaissent pas, c'est une méthode pour limiter la quantité de données envoyées à la carte graphique.
Mon soucis est que les coordonées de texture s'appliquent à un Vertex et non un index. Du coup j'ai deux faces sur mon cube qui ne sont pas correctes car elle ont deux (1.0, 1.0) ou deux (0.0, 0.0). De plus, les autres faces (qui sont texturées) sont inversée une face sur deux.
Une solution m'est venue imédiatement, c'est d'ajouter des vertex pour que les triangles ne partagent plus leurs vertex, mais ça augmente la quantité de données.
Je file mes buffers pour mon cube déssiné avec des triangles :
GLfloat CubePosData[] = { // Les Vertex de 0 à 7 avec le logo des index
   -1.0f,-1.0f, 1.0f,
   -1.0f,-1.0f,-1.0f,
   -1.0f, 1.0f,-1.0f,	
   -1.0f, 1.0f, 1.0f, //   7----3
                      //  /|   /|
    1.0f,-1.0f, 1.0f, // 6-4--2-0
    1.0f,-1.0f,-1.0f, // |/    |/
    1.0f, 1.0f,-1.0f, // 5-----1
    1.0f, 1.0f, 1.0f,};

GLubyte CubeIndexData[] = { // les index
	1,0,2,
	3,2,0,
	5,6,4,
	7,4,6,
	7,3,4,
	0,4,3,
	6,1,2,
	5,1,6,
	3,7,2,
	6,2,7,
	1,5,0,
	4,0,5,};

GLfloat CubeCoordsData[] = { // Coordonées dans le même ordre que les vertex
	0.0f,0.0f, 1.0f,0.0f, 1.0f,1.0f, 0.0f,1.0f,
	1.0f,0.0f, 0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f,
	1.0f,0.0f, 0.0f,1.0f, 1.0f,0.0f, 1.0f,0.0f,
	0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f, 1.0f,0.0f,};

Merci d'avance pour vos conseils.
Correction proposée:
Salut, je suis en train de faire un petit moteur 3d utilisant des VBO avec des Index partagés. Pour ceux qui ne connaissent pas, c'est une méthode pour limiter la quantité de données envoyées à la carte graphique.
Mon soucis est que les coordonnées de texture s'appliquent à un Vertex et non un index. Du coup j'ai deux faces sur mon cube qui ne sont pas correctes car elle ont deux (1.0, 1.0) ou deux (0.0, 0.0). De plus, les autres faces (qui sont texturées) sont inversée une face sur deux.
Une solution m'est venue immédiatement, c'est d'ajouter des vertex pour que les triangles ne partagent plus leurs vertex, mais ça augmente la quantité de données.
Je file mes buffers pour mon cube dessiné avec des triangles :
GLfloat CubePosData[] = { // Les Vertex de 0 à 7 avec le logo des index
   -1.0f,-1.0f, 1.0f,
   -1.0f,-1.0f,-1.0f,
   -1.0f, 1.0f,-1.0f,	
   -1.0f, 1.0f, 1.0f, //   7----3
                      //  /|   /|
    1.0f,-1.0f, 1.0f, // 6-4--2-0
    1.0f,-1.0f,-1.0f, // |/    |/
    1.0f, 1.0f,-1.0f, // 5-----1
    1.0f, 1.0f, 1.0f,};

GLubyte CubeIndexData[] = { // les index
	1,0,2,
	3,2,0,
	5,6,4,
	7,4,6,
	7,3,4,
	0,4,3,
	6,1,2,
	5,1,6,
	3,7,2,
	6,2,7,
	1,5,0,
	4,0,5,};

GLfloat CubeCoordsData[] = { // Coordonnées dans le même ordre que les vertex
	0.0f,0.0f, 1.0f,0.0f, 1.0f,1.0f, 0.0f,1.0f,
	1.0f,0.0f, 0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f,
	1.0f,0.0f, 0.0f,1.0f, 1.0f,0.0f, 1.0f,0.0f,
	0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f, 1.0f,0.0f,};

Merci d'avance pour vos conseils.
Dernière modification 09-09-2010 11:37:08 TUpac
Salut, je suis en train de faire un petit moteur 3d utilisant des VBO avec des Index partagés. Pour ceux qui ne connaissent pas, c'est une méthode pour limiter la quantité de données envoyées à la carte graphique.
Mon soucis est que les coordonnées de texture s'appliquent à un Vertex et non un index. Du coup j'ai deux faces sur mon cube qui ne sont pas correctes car elle ont deux (1.0, 1.0) ou deux (0.0, 0.0). De plus, les autres faces (qui sont texturées) sont inversée une face sur deux.
Une solution m'est venue immédiatement, c'est d'ajouter des vertex pour que les triangles ne partagent plus leurs vertex, mais ça augmente la quantité de données.
Je file mes buffers pour mon cube dessiné avec des triangles :
GLfloat CubePosData[] = { // Les Vertex de 0 à 7 avec le logo des index
   -1.0f,-1.0f, 1.0f,
   -1.0f,-1.0f,-1.0f,
   -1.0f, 1.0f,-1.0f,	
   -1.0f, 1.0f, 1.0f, //   7----3
                      //  /|   /|
    1.0f,-1.0f, 1.0f, // 6-4--2-0
    1.0f,-1.0f,-1.0f, // |/    |/
    1.0f, 1.0f,-1.0f, // 5-----1
    1.0f, 1.0f, 1.0f,};

GLubyte CubeIndexData[] = { // les index
	1,0,2,
	3,2,0,
	5,6,4,
	7,4,6,
	7,3,4,
	0,4,3,
	6,1,2,
	5,1,6,
	3,7,2,
	6,2,7,
	1,5,0,
	4,0,5,};

GLfloat CubeCoordsData[] = { // Coordonnées dans le même ordre que les vertex
	0.0f,0.0f, 1.0f,0.0f, 1.0f,1.0f, 0.0f,1.0f,
	1.0f,0.0f, 0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f,
	1.0f,0.0f, 0.0f,1.0f, 1.0f,0.0f, 1.0f,0.0f,
	0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f, 1.0f,0.0f,};

Merci d'avance pour vos conseils.
Création du message 09-09-2010 11:34:04 TUpac
Salut, je suis en train de faire un petit moteur 3d utilisant des VBO avec des Index partagés. Pour ceux qui ne connaissent pas, c'est une méthode pour limiter la quantité de données envoyées à la carte graphique.
Mon soucis est que les coordonnées de texture s'appliquent à un Vertex et non un index. Du coup j'ai deux faces sur mon cube qui ne sont pas correctes car elle ont deux (1.0, 1.0) ou deux (0.0, 0.0). De plus, les autres faces (qui sont texturées) sont inversée une face sur deux.
Une solution m'est venue immédiatement, c'est d'ajouter des vertex pour que les triangles ne partagent plus leurs vertex, mais ça augmente la quantité de données.
Je file mes buffers pour mon cube dessiné avec des triangles :
GLfloat CubePosData[] = { // Les Vertex de 0 à 7 avec le logo des index
   -1.0f,-1.0f, 1.0f,
   -1.0f,-1.0f,-1.0f,
   -1.0f, 1.0f,-1.0f,	
   -1.0f, 1.0f, 1.0f, //   7----3
                      //  /|   /|
    1.0f,-1.0f, 1.0f, // 6-4--2-0
    1.0f,-1.0f,-1.0f, // |/    |/
    1.0f, 1.0f,-1.0f, // 5-----1
    1.0f, 1.0f, 1.0f,};

GLubyte CubeIndexData[] = { // les index
	1,0,2,
	3,2,0,
	5,6,4,
	7,4,6,
	7,3,4,
	0,4,3,
	6,1,2,
	5,1,6,
	3,7,2,
	6,2,7,
	1,5,0,
	4,0,5,};

GLfloat CubeCoordsData[] = { // Coordonnées dans le même ordre que les vertex
	0.0f,0.0f, 1.0f,0.0f, 1.0f,1.0f, 0.0f,1.0f,
	1.0f,0.0f, 0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f,
	1.0f,0.0f, 0.0f,1.0f, 1.0f,0.0f, 1.0f,0.0f,
	0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f, 1.0f,0.0f,};

Merci d'avance pour vos conseils.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
152 invités en ligne
membre en ligne: -
RSS Feed