Я написал крошечный движок OpenGL, который использует 3+ функции. В настоящее время я пытаюсь интегрировать свой движок в QGLWidget и имею проблемы. При рендеринге модели obj без qt framework я получил ожидаемые результаты, но при использовании Qt мои буферы OpenGL каким-то образом повреждены, так что я вижу неправильный результат или даже ничего.
Без Qt:
В QGLWidget:
Я хочу спросить, меняет ли Qt какие-либо состояния OpenGL между вызовами QGLWidget::paintGL(). Мои объекты инициализируются и отображаются в следующем порядке:
Инициализация:
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*()
glGetError()
и убедились, что он ни на что не жалуется? И вы делаете вызовы GL только в методах, где контекст был создан и является текущим? Возможно, в вашем коде уже была ошибка, и вам просто повезло, что она работала раньше. В частности, я бы внимательно посмотрел на управление всеми идентификаторами объектов. Убедитесь, что все они сгенерированы правильно, а не удалены случайно (довольно часто при заключении их в объекты C++) и что везде используются правильные идентификаторы. - person Reto Koradi   schedule 18.05.2014stof()
, не включен, и он возвращается к древнему стандарту C, предполагающему, что необъявленные функции возвращаютint
? Похоже, функция объявлена в<string>
. Это также функция С++ 11, поэтому, возможно, для ее доступности нужны определенные флаги компилятора? - person Reto Koradi   schedule 18.05.2014stof
? - person lefticus   schedule 19.02.2016