| 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" |