2015-02-06 12 views
8

Có thể vẽ toàn bộ khối lập phương chỉ bằng một đơn GL_TRIANGLE_STRIP không?Cube sử dụng đơn GL_TRIANGLE_STRIP

Rõ ràng nó chỉ là tổ hợp khối lập phương tôi quan tâm ở đây, nó cũng có thể được kéo dài vào bất kỳ loại hộp hoặc đối tượng tương tự.

+0

nói cách khác [mở khối lập phương thành một dòng,] (http: //www.csh. rit.edu/~pat/lj/un folded_cubes.png) –

Trả lời

3

Có, sau một chút thử nghiệm tôi đã tự tìm thấy câu trả lời. Hãy tưởng tượng các góc của khối lập phương của bạn có màu xen kẽ màu đen và trắng. Vẽ một cạnh tam giác dọc theo mỗi khuôn mặt giữa hai góc màu đen. Bằng cách đó, các đường chéo tạo thành một tứ diện bên trong khối lập phương. Đối với [0,1] ³ khối, một chuỗi có thể có của tọa độ sẽ được như sau:

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

Đối với những của những người lười biếng (như tôi), đây là phiên bản sao chép của câu trả lời cướp của cướp;)

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 
}; 
Các vấn đề liên quan