2016-09-04 18 views
1

私は自分のプログラムにQt creator ideとQt 5.7フレームワークを使用しています。私のフォームにはウィジェットがあります。このウィジェットはOpenGLによって制御されています。具体的には、そのウィジェットでOpenGLを使って図形を描きたいのです。しかし、私はglGenVertexArrays、glBindVertexArrayを使用することはできません。 私はこれらのエラーだ:Qt Creator Qt 5.7 OpenGL関数が見つかりません

'glGenVertexArrays': identifier not found 
'glBindVertexArray': identifier not found 

GLWidget.h:

#ifndef GLWIDGET_H 
#define GLWIDGET_H 

#include <QOpenGLWidget> 
#include <QOpenGLFunctions> 

class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions 
{ 
    Q_OBJECT 
public: 
    explicit GLWidget(QWidget *parent); 

protected: 
    void initializeGL() Q_DECL_OVERRIDE; 
    void paintGL() Q_DECL_OVERRIDE; 
    void resizeGL(int w, int h) Q_DECL_OVERRIDE; 
}; 

#endif // GLWIDGET_H 

GLWidget.cpp

#include "glwidget.h" 

GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent) 
{ 

} 

void GLWidget::initializeGL() { 
    initializeOpenGLFunctions(); 
    glClearColor(0, 0, 0, 1); 
} 

void GLWidget::paintGL() { 
    GLuint VertextArrayID; 
    glGenVertexArrays(1, &VertextArrayID); 
    glBindVertexArray(VertextArrayID); 
} 

void GLWidget::resizeGL(int w, int h) { 

} 

.PROファイル

QT  += core gui opengl 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = QtOpenGLTest 
TEMPLATE = app 

LIBS += -lOpenGL32 
SOURCES += main.cpp\ 
     mainwindow.cpp \ 
    glwidget.cpp 

HEADERS += mainwindow.h \ 
    glwidget.h 

FORMS += mainwindow.ui 

答えて

4

頂点配列関連の機能がありますにはないそのクラスは、彼らは他の方法で入手できます。2.

のOpenGL 2.1(+ FBO)とOpenGL ESの共通のサブセットを目指すよう、:

  • QOpenGLExtraFunctions(GL 3.xの+の拡張を目指して/ ES 3.x)
  • QOpenGLVertexArrayObject(機能のラッパークラス)
  • QOpenGLExtension_ARB_vertex_array_object(対応する拡張機能をラッパーするだけです)。これは、拡張子がOES_のES 2、または拡張子がAPPLE_のAppleデバイスでは機能しません。
+0

ありがとう、私はそれが作品だと思います。 QOpenGLExtraFunctionsで保護クラスを変更しました。それは間違いなく実行されます。 –

+0

おかげさまで、このスイッチは私が思うより簡単でした – ComradeJoecool

関連する問題