【问题标题】:open gl basic program error?opengl基本程序错误?
【发布时间】:2014-07-30 17:56:33
【问题描述】:
#include <stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<GL/glut.h>

void display (void)
{
    glClearColor(1.f, 0.f, 0.f, 1.f);
    glEnd();
    glFlush();
}

int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(100,100);
    glutCreateWindow("Colorcube Viewer");
    glutDisplayFunc(display);
    glEnable(GL_DEPTH_TEST);
    glutMainLoop();
    return 0;
}

我无法弄清楚这段代码有什么问题?
它没有给我一个红色窗口。

【问题讨论】:

  • 设置清除颜色后,需要调用清除命令glClear(GL_COLOR_BUFFER_BIT);
  • 是的,谢谢。你能告诉我为什么有时它会给我一个透明的窗口
  • 我不知道glFLush() 在您的示例中可能具有的所有意外行为,所以我不知道为什么它随时都是透明的。不过,在您的小示例中,您不需要glEndglFlush
  • 你应该删除那里的glEnd(),你没有任何以glBegin()开头的原语。
  • Draw in QGLFrameBufferObject 的可能重复项

标签: c++ c opengl graphics


【解决方案1】:

您需要在设置清除颜色后调用glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);(因为您启用了深度测试,请确保您同时清除颜色缓冲区和深度缓冲区

【讨论】:

  • 很高兴听到这个消息!不要忘记接受答案以表明它有效
猜你喜欢
  • 1970-01-01
  • 2014-09-07
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多