繁体   English   中英

OpenGL C ++-出现不必要的黑色三角形

[英]OpenGL c++ - unwanted black triangle appears

我开始使用OpenGL开发一个简单的GUI应用程序。 绘制简单的背景四边形会带来很多困难,而我只是无法发现自己​​做错了什么或“坏了”。 这是代码的一部分,负责绘制我的背景“四元组”:

static void Draw(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(0.5f, 0.5f, 0.5f);
    glBegin(GL_QUADS);
    glVertex2f(-1.0f, -1.0f);
    glVertex2f(1.0f, -1.0f);
    glVertex2f(-1.0f, 1.0f);
    glVertex2f(1.0f, 1.0f);
    glEnd();
    glutSwapBuffers();
}


int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(600, 600);
    glutCreateWindow("Pro Sound");
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glutDisplayFunc(Draw);
    glutKeyboardFunc(keyPressed);
    glutKeyboardUpFunc(keyUp);

    glutMainLoop();
}

输出看起来像一个灰色的四边形,但是在其顶部(右侧)上有一个黑色的三角形,其中心,右上角和右下角均具有顶点。 所以我的背景看起来像是被一个三角形牙齿像素的怪物咬了。 事实是,它最近工作正常,我什至可以添加一些纹理,将其放置好等。

看起来您以错误的顺序绘制了四边形顶点。 默认情况下,顶点应沿着多边形的周长按逆时针方向排序。

因此,您拥有的是:

(-1.0f, -1.0f)  Bottom-Left
( 1.0f, -1.0f)  Bottom-Right
(-1.0f,  1.0f)  Top-Left
( 1.0f,  1.0f)  Top-Right

正在创建:

在此处输入图片说明

当你想要的时候:

(-1.0f, -1.0f)  Bottom-Left
( 1.0f, -1.0f)  Bottom-Right
( 1.0f,  1.0f)  Top-Right
(-1.0f,  1.0f)  Top-Left

这将创建:

在此处输入图片说明

另请参见面剔除原始-Quads

不要使用GL_QUADS并更改坐标,而应保留坐标并使用GL_TRIANGLE_STRIP

我相当确定GL_QUADS已弃用,无论您是否绘制四边形,使用GL_TRIANGLE_STRIPGL_TRIANGLE_FAN似乎都是一个好习惯。

唯一应使用GL_QUADS时间是在即时模式下并草拟一个性能无关紧要的小程序时。 (这可能是其中一种情况;但是为了加强和保持良好的性能,我始终使用GL_TRIANGLE_STRIPGL_TRIANGLE_FAN 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM