gpt4 book ai didi

c++ - Qt Creator Qt 5.7,未找到 OpenGL 函数

转载 作者:行者123 更新时间:2023-11-30 01:42:39 26 4
gpt4 key购买 nike

我正在为我的程序使用 Qt Creator IDE 和 Qt 5.7 框架。我的表单中有一个小部件。这个小部件由 OpenGL 控制。更具体地说,我想在该小部件上使用 OpenGL 绘制形状。但是,我不能使用 glGenVertexArrays 或 glBindVertexArray。我收到这些错误:

'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

最佳答案

与顶点数组相关的函数不在 QOpenGLFunctions 中,因为该类针对 OpenGL 2.1 (+FBO) 和 OpenGL ES 2 的通用子集。

它们可以通过其他方式获得:

  • QOpenGLExtraFunctions(针对 GL 3.x + 扩展/ES 3.x)
  • QOpenGLVertexArrayObject(功能的包装类)
  • QOpenGLExtension_ARB_vertex_array_object(它只是包装了相应的扩展。这在 ES 2 上不起作用,你有 OES_ 扩展,或者在 Apple 设备上有 APPLE_ 扩展名)。

关于c++ - Qt Creator Qt 5.7,未找到 OpenGL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39320719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com