Historique des modifications - Message

Message #8754

Sujet: Texture Coordinates sur Vertex partagés


Type Date Auteur Contenu
Correction acceptée 12-09-2010 19:08:11 Zorian
Texte original:
première chose il vaut mieux utiliser glDrawArrays que glDrawElement plus rapide, et plus orienté VBO ...
deusio tu ne spécifies pas de normale donc il est normal que les faces de ton cube ne soient pas correctement orientées

quand on définit des faces il y a un ordre ( "clock-wise" ou "counter clock-wise" ), et suivant le cas les faces sont tournées d'origine vers l'intérieur("counter...") ou l'extérieur ("clock-wise")

exemple: 'tiré de mon code pour un cube'

clock-wize:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 3; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 1;
                    tmp->indices[1].vertex[0] = 0; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 2;

counter clock-wize:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 1; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 3;
                    tmp->indices[1].vertex[0] = 2; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 0;

bon par contre tu notes que les vertices ne sont pas dans l'ordre donc les indices ... et puis bien sûr tu peux les "décaler"
Correction proposée:
première chose il vaut mieux utiliser glDrawArrays que glDrawElement plus rapide, et plus orienté VBO ...
deusio tu ne spécifies pas de normale donc il est normal que les faces de ton cube ne soient pas correctement orientées

quand on définit des faces il y a un ordre ( "clock-wise" ou "counter clock-wise" ), et suivant le cas les faces sont tournées d'origine vers l'intérieur("counter...") ou l'extérieur ("clock-wise")

exemple: 'tiré de mon code pour un cube'

clock-wise:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 3; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 1;
                    tmp->indices[1].vertex[0] = 0; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 2;

counter clock-wise:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 1; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 3;
                    tmp->indices[1].vertex[0] = 2; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 0;

bon par contre tu notes que les vertices ne sont pas dans l'ordre donc les indices ... et puis bien sûr tu peux les "décaler"
Correction en attente 12-09-2010 19:07:50 Zorian
Texte original:
premiere chose il vaut mieux utiliser glDrawArrays que glDrawElement plus rapid, et plus arrienter VBO ...
deusio tu ne spécifie pas de normale donc il est normale que les face de ton cube ne soit pas correctement orienter

quand on définie des faces il y a un ordre ( "clock-wize" ou "counter clock-wize" ), et suivant le cas les face sont tournée d'origine vers l'intérieur("counter...") ou l'extérieur ("clock-wise")

example: 'tiré de mon code pour un cube'

clock-wize:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 3; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 1;
                    tmp->indices[1].vertex[0] = 0; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 2;

counter clock-wize:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 1; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 3;
                    tmp->indices[1].vertex[0] = 2; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 0;

bon par contre tu note que les vertices ne sont pas dans l'ordre donc les indices ... et puis biensur tu peut les "décalées"
Correction proposée:
première chose il vaut mieux utiliser glDrawArrays que glDrawElement plus rapide, et plus orienté VBO ...
deusio tu ne spécifies pas de normale donc il est normal que les faces de ton cube ne soient pas correctement orientées

quand on définit des faces il y a un ordre ( "clock-wise" ou "counter clock-wise" ), et suivant le cas les faces sont tournées d'origine vers l'intérieur("counter...") ou l'extérieur ("clock-wise")

exemple: 'tiré de mon code pour un cube'

clock-wize:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 3; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 1;
                    tmp->indices[1].vertex[0] = 0; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 2;

counter clock-wize:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 1; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 3;
                    tmp->indices[1].vertex[0] = 2; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 0;

bon par contre tu notes que les vertices ne sont pas dans l'ordre donc les indices ... et puis bien sûr tu peux les "décaler"
Création du message 10-09-2010 13:29:35 Magun
première chose il vaut mieux utiliser glDrawArrays que glDrawElement plus rapide, et plus orienté VBO ...
deusio tu ne spécifies pas de normale donc il est normal que les faces de ton cube ne soient pas correctement orientées

quand on définit des faces il y a un ordre ( "clock-wise" ou "counter clock-wise" ), et suivant le cas les faces sont tournées d'origine vers l'intérieur("counter...") ou l'extérieur ("clock-wise")

exemple: 'tiré de mon code pour un cube'

clock-wise:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 3; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 1;
                    tmp->indices[1].vertex[0] = 0; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 2;

counter clock-wise:

Code c++ :


                    tmp->vertices[0].Pos = core::math::vector3df( size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[1].Pos = core::math::vector3df(-size.x/2,-size.y/2, -size.z/2);
                    tmp->vertices[2].Pos = core::math::vector3df( size.x/2, size.y/2, -size.z/2);
                    tmp->indices[0].vertex[0] = 1; tmp->indices[0].vertex[1] = 2; tmp->indices[0].vertex[2] = 3;
                    tmp->indices[1].vertex[0] = 2; tmp->indices[1].vertex[1] = 1; tmp->indices[1].vertex[2] = 0;

bon par contre tu notes que les vertices ne sont pas dans l'ordre donc les indices ... et puis bien sûr tu peux les "décaler"

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
102 invités en ligne
membre en ligne: -
RSS Feed