2015-02-06 15 views
8

Czy możliwe jest narysowanie całej kostki za pomocą pojedynczego GL_TRIANGLE_STRIP?Kostka przy użyciu pojedynczego GL_TRIANGLE_STRIP

Oczywiście to tylko kombinatoryka kostki, o którą się tutaj martwię, równie dobrze można ją rozciągnąć na dowolny rodzaj pudełka lub podobny przedmiot.

+0

w drugim słowie [rozłóż kostkę w jednej linii,] (http: //www.csh. rit.edu/~pat/lj/un folded_cubes.png) –

Odpowiedz

3

Tak, po odrobinie eksperymentowania sam znalazłem odpowiedź. Wyobraź sobie, że narożniki twojej kostki są na przemian czarno-białe. Narysuj krawędź trójkąta wzdłuż każdej ściany między dwoma czarnymi narożnikami. W ten sposób przekątne tworzą czworościan wewnątrz sześcianu. Do [0,1] ³ modułu, możliwe sekwencji współrzędnych będzie następujący:

Vertex Triangle Face 
------+-----------+----- 
0 0 0 
0 1 0 
1 0 0 000 010 100 **0 
1 1 0 100 010 110 **0 
1 1 1 100 110 111 1** 
0 1 0 111 110 010 *1* 
0 1 1 111 010 011 *1* 
0 0 1 011 010 001 0** 
1 1 1 011 001 111 **1 
1 0 1 111 001 101 **1 
1 0 0 111 101 100 1** 
0 0 1 100 101 001 *0* 
0 0 0 100 001 000 *0* 
0 1 0 000 001 010 0** 
1

dla osób z was, którzy są leniwi (jak ja), oto wersja copy-paste odpowiedzi rob mayoff za;)

static const GLfloat cube_strip[] = { 
    -1.f, 1.f, 1.f,  // Front-top-left 
    1.f, 1.f, 1.f,  // Front-top-right 
    -1.f, -1.f, 1.f, // Front-bottom-left 
    1.f, -1.f, 1.f,  // Front-bottom-right 
    1.f, -1.f, -1.f, // Back-bottom-right 
    1.f, 1.f, 1.f,  // Front-top-right 
    1.f, 1.f, -1.f,  // Back-top-right 
    -1.f, 1.f, 1.f,  // Front-top-left 
    -1.f, 1.f, -1.f, // Back-top-left 
    -1.f, -1.f, 1.f, // Front-bottom-left 
    -1.f, -1.f, -1.f, // Back-bottom-left 
    1.f, -1.f, -1.f, // Back-bottom-right 
    -1.f, 1.f, -1.f, // Back-top-left 
    1.f, 1.f, -1.f  // Back-top-right 
}; 
Powiązane problemy