Retourner au sujet
Version du 12 September 2010 à 21h 07mn 50s
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"
Message initiale datant du 10 September 2010 à 15h 29mn 35s
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"