如何在 OpenGL 中枚举顶点
How to enumerate vertices in OpenGL
我是 OpenGL 的新手,我的问题似乎很简单,但我还没有找到合适的信息。
我试图通过围绕 y 轴旋转一个三角形来构建我自己的圆锥体。
我有一些描述三角形的 (x,y) 坐标。据我了解,我必须将它们转换为 (x,y,z)
,如 (x*cos(alpha), x*sin(alpha),y)
,其中 alpha
在 [0, 2Pi]
之间,有一些步骤(让它成为 Pi/36
)
接下来,我必须枚举获得的顶点来告诉OpenGL如何连接它们。
所以,我的问题是如何正确枚举它们。
问题与OpenGL无关;
这个圆锥将没有基础。
首先创建顶点
int density = 10;
float3 vertices[];
vertices.add(float3(0,0,1));
for(int i=0; i<=density; i++) {
float alpha = i*2*PI/density
vertices.add(float3(cos(alpha), sin(alpha), 0));
}
然后创建索引和三角形
int indices[];
for(int i=0; i<density; i++) {
//add triangle
indices.add(0);
indices.add(i);
indices.add(i+1);
}
然后你必须在绘图过程中使用来自 vertices[]
和 indices[]
的数据。
我是 OpenGL 的新手,我的问题似乎很简单,但我还没有找到合适的信息。
我试图通过围绕 y 轴旋转一个三角形来构建我自己的圆锥体。
我有一些描述三角形的 (x,y) 坐标。据我了解,我必须将它们转换为 (x,y,z)
,如 (x*cos(alpha), x*sin(alpha),y)
,其中 alpha
在 [0, 2Pi]
之间,有一些步骤(让它成为 Pi/36
)
接下来,我必须枚举获得的顶点来告诉OpenGL如何连接它们。
所以,我的问题是如何正确枚举它们。
问题与OpenGL无关; 这个圆锥将没有基础。
首先创建顶点
int density = 10;
float3 vertices[];
vertices.add(float3(0,0,1));
for(int i=0; i<=density; i++) {
float alpha = i*2*PI/density
vertices.add(float3(cos(alpha), sin(alpha), 0));
}
然后创建索引和三角形
int indices[];
for(int i=0; i<density; i++) {
//add triangle
indices.add(0);
indices.add(i);
indices.add(i+1);
}
然后你必须在绘图过程中使用来自 vertices[]
和 indices[]
的数据。