我编写了一个使用3个以上功能的小型OpenGL引擎。我目前正在尝试将我的引擎集成到QGLWidget中并遇到问题。在没有qt框架的情况下渲染obj模型时,我得到了预期的结果,但是当使用Qt时,我的OpenGL缓冲区在某种程度上被破坏,所以我看到错误的结果甚至没有。
没有Qt:
在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*()
答案 0 :(得分:1)
您看到的问题是因为Qt正在为您设置系统上的C语言环境,以及期望浮点数以逗号分隔而不是以句点分隔的内容。
您可以通过在调用QApplication
后立即将本地重置为其他内容来解决此问题
例如:
std::setlocale(LC_ALL, "POSIX");