OpenGL:尝试使用三角形创建实心圆柱体
我试图创建一个使用三角形风扇实心圆柱体。 到目前为止,我所做的是:OpenGL:尝试使用三角形创建实心圆柱体,opengl,Opengl,我试图创建一个使用三角形风扇实心圆柱体。 到目前为止,我所做的是: float base = 0.5; float height = 20; float radius = 2.0f; glBegin(GL_TRIANGLE_FAN); for(float j=0; j<=height; j+=0.1) { glVertex3f(0,j,0); for(int i=0; i<360; i++) { glVertex3f(radius*sin((f
float base = 0.5;
float height = 20;
float radius = 2.0f;
glBegin(GL_TRIANGLE_FAN);
for(float j=0; j<=height; j+=0.1)
{
glVertex3f(0,j,0);
for(int i=0; i<360; i++)
{
glVertex3f(radius*sin((float)i),j, radius*cos((float)i));
}
}
glEnd();
glPopMatrix();
float base=0.5;
浮子高度=20;
浮动半径=2.0f;
glBegin(GLU三角形风扇);
for(float j=0;jfor(int i=0;ifor(int i=0;i首先要注意的是(编辑:我有点误读了您的代码。您使用三角形风扇做得很好)是三角形风扇的工作原理如下:
glVertex: Center point
for each outer point p
glVertex: p
例如:
p2__
/| ---___p1
/ | /
/ | /
p3/ | /
|\ | /
| \ | /
| \_O Center
| __---
p4
第二件事是圆柱体由三部分组成:
__
/ \
\__/ <---- circle on top (facing up)
| |
| |
| |
| | <---- tube in the middle
| |
| |
| |
\__/ <---- circle on the bottom (facing down)
__
/ \
\__/您应该注意的第一件事(编辑:我有点误读了您的代码。您使用三角形风扇做得很好)是三角形风扇的工作原理如下:
glVertex: Center point
for each outer point p
glVertex: p
例如:
p2__
/| ---___p1
/ | /
/ | /
p3/ | /
|\ | /
| \ | /
| \_O Center
| __---
p4
第二件事是圆柱体由三部分组成:
__
/ \
\__/ <---- circle on top (facing up)
| |
| |
| |
| | <---- tube in the middle
| |
| |
| |
\__/ <---- circle on the bottom (facing down)
__
/ \
\__/这不是问题。这是真的,但他做了很多轮,不少于一轮。你至少可以把它改成glVertex3fv
。它在度上运行得很好。弧度看起来会更好吗?这不是问题。这是真的,但他做了很多轮,不少于一轮。你至少可以把它改成glVertex3fv
。它对度的效果很好。弧度看起来更好吗?谢谢你的回答!现在看起来很好!我想让你解释一下为什么第二个是按相反的顺序排列的?在OpenGL中,如果你通过引入点“a,B,C”或“a,C,B”来创建三角形,您可以创建相同的三角形,但面朝另一个方向。例如,您可以调用(GL_BACK)以防止OpenGL绘制位于对象不可见一侧的三角形。背面和正面也会影响照明。因此,最好保持点的顺序,以便法线(使用右手规则)会朝外。谢谢你的回答!现在看起来很好!我想让你解释一下为什么第二个是按相反的顺序排列的?在OpenGL中,如果你通过引入点“a,B,C”或“a,C,B”来创建一个三角形,你会创建一个相同的三角形,但面向另一个方向。例如,你可以调用(GL_BACK)防止OpenGL绘制对象不可见面上的三角形。背面和正面也会影响照明。因此,最好保持点的顺序,以便法线(使用右手规则)朝外。