Qt5.10 Windows: 'glVertexAttrib2fv' не было объявлено в этой области? - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь перенести свой проект OpenGL с GLFW на Qt 5.10.1 под Windows, используя MinGW, но у меня возникли некоторые проблемы. Все работало отлично, пока мне не понадобилось использовать glVertexAttrib2fv, который, как говорит Qt, «не был объявлен в этой области»! Я не знаю, что мне не хватает.

main.cpp

QSurfaceFormat format;
format.setVersion(4, 3);
format.setProfile(QSurfaceFormat::CoreProfile);
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
format.setSamples(10); 
QSurfaceFormat::setDefaultFormat(format);

myopenglwidget.h:

#include <QWidget>
#include <QOpenGLWidget>
#include <QOpenGLFunctions_4_3_Core>
#include <QOpenGLShaderProgram>

class MyOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_4_3_Core
{
protected:
    void initializeGL();
...
}

void MyOpenGLWidget::initializeGL()
{
    // initialize OpenGL Functions
    initializeOpenGLFunctions();
...
}

Примечание: glVertexAttrib2fv поддерживается во всех версиях OpenGL: https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glVertexAttrib.xhtml

Спросите, нужна ли дополнительная информация для решения этой проблемы.

1 Ответ

0 голосов
/ 28 июня 2018

Я нашел решение, хитрость была в том, чтобы использовать CompatibilityProfile вместо CoreProfile!

main.cpp

QSurfaceFormat format;
format.setVersion(4, 3);
format.setProfile(QSurfaceFormat::CompatibilityProfile);
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
format.setSamples(10); 
QSurfaceFormat::setDefaultFormat(format);

myopenglwidget.h:

#include <QWidget>
#include <QOpenGLWidget>
#include <QOpenGLFunctions_4_3_Compatibility>
#include <QOpenGLShaderProgram>

class MyOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions_4_3_Compatibility
{
...
}

ИЛИ вы можете просто использовать protected QOpenGLExtraFunctions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...