我开始使用 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
正在创建:
当你想要的时候:
(-1.0f, -1.0f) Bottom-Left
( 1.0f, -1.0f) Bottom-Right
( 1.0f, 1.0f) Top-Right
(-1.0f, 1.0f) Top-Left
它创建:
关于c++ - OpenGL c++ - 出现不需要的黑色三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064476/