我是一个OpenGL初学者,几乎没有任何意义给我。下面是我当前创建3D矩形的代码。我想创建一个3D圆柱体坐在它的中间,但我不确定如何实现这一点。我试图创建圆柱体的顶部使用8个三角形,但它不显示所需的。我已经看了多个教程,都集中在GLUdrawCylinder方法,但我没有线索,如何将其纳入我目前的代码。任何关于如何修复我当前代码以显示3D圆柱体的建议都将非常感谢。
void UCreateMesh(GLMesh& mesh)
{
// Position and Color data
GLfloat verts[] = {
// Vertex Positions // Colors (r,g,b,a)
-0.5f, 0.25f, 0.0f, 1.0f, 1.0f, 0.5f, 1.0f, // Top Right Vertex 0
-0.5f, -0.0f, 0.0f, 1.0f, 1.0f, 0.5f, 1.0f, // Bottom Right Vertex 1
0.0f, 0.0f, 0.25f, 1.0f, 1.0f, 0.5f, 1.0f, // Bottom Left Vertex 2
0.0f, -0.25f, -0.25f, 1.0f, 1.0f, 0.5f, 1.0f, // Top Left Vertex 3
0.75f, 0.25f, -.25f, 1.0f, 1.0f, 0.5f, 1.0f, // 4 br right
0.75f, 0.0f, -.25f, 1.0f, 1.0f, 0.5f, 1.0f, // 5 tl right
0.25f, .5f, 0.0f, 1.0f, 1.0f, 0.5f, 1.0f, // 6 tl top
0.25f, 0.25f, 0.0f, 1.0f, 1.0f, 0.5f, 1.0f, // 7 bl back
0.12f, 0.25f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, // 8 bl back
0.06f, 0.30f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, // 9 bl back
0.12f, 0.40f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, // 10 bl back
0.25f, 0.30f, 0.05f, 1.0f, 0.0f, 0.0f, 1.0f, // 11 bl back
0.25f, 0.25f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, // 12 bl back
0.25f, 0.20f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, // 13 bl back
0.20f, 0.15f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, // 14 bl back
0.10f, 0.20f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, // 15 bl back
0.0f, 0.25f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f // 16 bl back
};
// Index data to share position data
GLushort indices[] = {
0, 1, 3, // Triangle 1
0, 2, 3, // Triangle 2
5, 4, 6, // Triangle 3
5, 7, 6, // Triangle 4
0, 2, 4, // Triangle 5
0, 6, 4, // Triangle 6
1, 3, 5, // Triangle 7
1, 7, 5, // Triangle 8
2, 3, 5, // Triangle 9
2, 4, 5, // Triangle 10
0, 1, 7, // Triangle 11
0, 6, 7, // Triangle 12
9,8,10,
10,8,11,
11,8,12,
12,8,13,
13,8,14,
14,8,15,
15,8,16,
16,8,9,
17,18,19,
17,20,19,
20,19,21,
20,22,21,
22,21,24,
22,23,24,
23,24,26,
23,25,26,
25,26,28,
25,27,28,
};
字符集
我已经审查了多个教程,但所有我能设法创建的是立方体和金字塔。对汽缸毫无头绪。
1条答案
按热度按时间xesrikrc1#
你做它的部分。首先,为每个顶面和底面创建一个三角形圆圈。然后为每个面创建两个三角形,围绕圆柱体。下面是一些未经测试的代码,可以让你朝着正确的方向开始(如果我有机会,我会检查它是否都是CCW,并正确地生成人脸):
字符集