【发布时间】:2013-02-08 00:49:53
【问题描述】:
我查看了大量关于 OpenGL 不绘图、常见错误等的文章和 SO 问题。这一篇让我很困惑。
我已经为glOrtho 尝试了几种不同的设置,不同的顶点位置、颜色等,都无济于事。
我可以确认 OpenGL 状态是有效的,因为代码中的透明颜色是紫色(意味着窗口是紫色)。 gDEBugger 也在确认框架正在更新(Fraps 也是如此)。
这里是代码。标记为“没有帮助”的行最初不存在,是我尝试过但失败的事情。
QTWindow::QTWindow( )
{
// Enable mouse tracking
this->setMouseTracking(true);
}
void QTWindow::initializeGL()
{
// DEBUG
debug("Init'ing GL");
this->makeCurrent(); ///< Didn't help
this->resizeGL(0, 0); ///< Didn't help
glDisable(GL_CULL_FACE); ///< Didn't help
glClearColor(1, 0, 1, 0);
}
void QTWindow::paintGL()
{
// DEBUG
debug("Painting GL");
this->makeCurrent(); ///< Didn't help
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0,1,1);
glBegin(GL_TRIANGLES);
glVertex2f(500,100);
glVertex2f(100,500);
glVertex2f(0,0);
glEnd();
this->swapBuffers(); ///< Didn't help
}
void QTWindow::resizeGL(int width, int height)
{
// DEBUG
debug("Resizing GL");
this->makeCurrent(); ///< Didn't help
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 1000, 0, 1000, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
即使关闭了剔除,三角形也根本不显示。但是,所有三个调试日志都按应有的方式调用。
我错过了什么?
【问题讨论】:
-
所以基本上,你得到一个紫色的屏幕(由于
glClearColor和glClear),但是没有三角形绘制?只是想澄清一下... -
正确。我已经尝试过四边形,此时我只是在尝试不同的东西,没有押韵或理由。我删除了对
makeCurrent的调用并将updateGL更改为仅update。还是什么都没有。
标签: c++ qt opengl qt4 qglwidget