Qt 5.0.2和OpenGL 3+渲染问题

时间:2014-05-17 17:30:25

标签: c++ qt opengl-3 qglwidget

我编写了一个使用3个以上功能的小型OpenGL引擎。我目前正在尝试将我的引擎集成到QGLWidget中并遇到问题。在没有qt框架的情况下渲染obj模型时,我得到了预期的结果,但是当使用Qt时,我的OpenGL缓冲区在某种程度上被破坏,所以我看到错误的结果甚至没有。

没有Qt:

renders nice without Qt

在QGLWidget中:

strange behavious in QGLWidget

我想问一下Qt是否在QGLWidget :: paintGL()调用之间改变了任何OpenGL状态。 我的对象按以下顺序初始化和呈现:

初​​始化:

Create and bind vertex array
Create and bind vertex buffer
Fill vertex buffer (works fine - obj loader tested many times)
Calls to glVertexAttribPointer() and glEnableVertexAttribArray()

渲染:

Bind vertex array
Shaders, uniforms, etc.
glDraw*()

1 个答案:

答案 0 :(得分:1)

您看到的问题是因为Qt正在为您设置系统上的C语言环境,以及期望浮点数以逗号分隔而不是以句点分隔的内容。

您可以通过在调用QApplication后立即将本地重置为其他内容来解决此问题

例如:

std::setlocale(LC_ALL, "POSIX");