用三角形条创建平面
Creating plane with triangular strips
我正在尝试创建一个精细的三角网格。在绘制函数中:
// Draws triangular strip as only lines
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
// Create Cloth Mesh
glBegin(GL_TRIANGLE_STRIP);
glNormal3f(0,0,1);
for(float i = 0.0 ; i < 2.0; i+=.05)
{
for(float j = -1.0 ; j < 1.0 ; j+=.05)
{
glVertex3f(j,1-i+.05,0);
glVertex3f(j,1-i,0);
}
}
glEnd();
我得到以下输出:
这是我所期望的。
但是如果我旋转场景,我会在背面看到这个:
(看不清的话就是网眼微弱,但三角形跟正面不一样)
Q1。背面不应该完全不可见吗?我启用了这些标志:
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
Q2。就算背面出现了,为什么会出现这些不规则的长三角形,和正面的不一样?
P.S。这是调整大小功能:
void MyGLWidget::resizeGL(int width, int height)
{
int side = qMin(width, height);
glViewport((width - side) / 2, (height - side) / 2, side, side);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2, +2, -2, +2, 1.0, 15.0);
glMatrixMode(GL_MODELVIEW);
}
P.P.S:是的,我知道这不是现代 OpenGL。
对我来说,这看起来像三角形,由左侧 "jump back" 的三角形带产生。每当您开始新的一行时,就会发生这种情况。基本上,它们由前一行的最后一个顶点和下一行的第一个顶点组成。背面剔除似乎有效,但从背面可以看到大三角形,因为它们的缠绕顺序与其中一个小三角形正好相反。
如果您不想拥有它们,则必须重置每行末尾的三角形带,或者使用其他结构 (GL_TRIANGLES)。
我正在尝试创建一个精细的三角网格。在绘制函数中:
// Draws triangular strip as only lines
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
// Create Cloth Mesh
glBegin(GL_TRIANGLE_STRIP);
glNormal3f(0,0,1);
for(float i = 0.0 ; i < 2.0; i+=.05)
{
for(float j = -1.0 ; j < 1.0 ; j+=.05)
{
glVertex3f(j,1-i+.05,0);
glVertex3f(j,1-i,0);
}
}
glEnd();
我得到以下输出:
这是我所期望的。
但是如果我旋转场景,我会在背面看到这个:
(看不清的话就是网眼微弱,但三角形跟正面不一样)
Q1。背面不应该完全不可见吗?我启用了这些标志:
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
Q2。就算背面出现了,为什么会出现这些不规则的长三角形,和正面的不一样?
P.S。这是调整大小功能:
void MyGLWidget::resizeGL(int width, int height)
{
int side = qMin(width, height);
glViewport((width - side) / 2, (height - side) / 2, side, side);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2, +2, -2, +2, 1.0, 15.0);
glMatrixMode(GL_MODELVIEW);
}
P.P.S:是的,我知道这不是现代 OpenGL。
对我来说,这看起来像三角形,由左侧 "jump back" 的三角形带产生。每当您开始新的一行时,就会发生这种情况。基本上,它们由前一行的最后一个顶点和下一行的第一个顶点组成。背面剔除似乎有效,但从背面可以看到大三角形,因为它们的缠绕顺序与其中一个小三角形正好相反。
如果您不想拥有它们,则必须重置每行末尾的三角形带,或者使用其他结构 (GL_TRIANGLES)。