c++ - OpenGL c++ - 出现不需要的黑色三角形

标签 c++ opengl

我开始使用 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();
}

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

最佳答案

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

所以你拥有的是:

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

正在创建:

enter image description here

当你想要的时候:

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

它创建:

enter image description here

另见 Face CullingPrimitive - Quads

关于c++ - OpenGL c++ - 出现不需要的黑色三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064476/

相关文章:

c++ - OpenGL - 重新绑定(bind) glBindVertexArray 不会在屏幕上绘制任何内容

c++ - 无法使用 Glut 或 OpenGL 显示 PNG

c++ - 导出对象渲染opengl

opengl - libgdx:在哪里放置 Gdx.gl.glClearColor()

c++ - 模板化模式对象和外部密码对象有什么区别?

c++ - Qt 与 OpenCv 不执行任何操作

c++ - 错误 : invalid use of template-name ‘ExTree’ without an argument list || How do if fix this?(初学者)

c++ - C++ 中是否有两种类型的成员初始值设定项列表?

c++ - QT - 逐步将小部件添加到水平布局

opengl - 非片段着色器中的纹理查找如何工作?