gpt4 book ai didi

qt - 带 Qt5 的 glewInit 返回缺少 GL 版本

转载 作者:行者123 更新时间:2023-12-03 01:02:29 24 4
gpt4 key购买 nike

我一直在尝试使用 Qt5 为我提供一个 OpenGL 上下文,我相信它确实如此,但是当我尝试从initializeGL 函数中调用 glewInit() 时,错误返回“缺少 GL 版本”,这是我的错误。被引导相信表明没有有效的上下文。我看到的解决方案是从initializeGL 中调用glewInit()...但我已经这样做了。

我将透明颜色和清除设置为深红色,以验证 gl 调用是否正常工作,正如它们看起来的那样。

有什么建议吗?

ma​​in.c

#define QT_NO_OPENGL_ES_2
#include <QApplication>
#include "glwidget.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
GLWidget w;
w.show();

return a.exec();
}

glwidget.h

#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <GL/glew.h>
#define QT_NO_OPENGL_ES_2
#include <QGLWidget>

class GLWidget : public QGLWidget
{
Q_OBJECT

public:
explicit GLWidget(QGLWidget *parent = 0);
~GLWidget();

QSize minimumSizeHint() const;
QSize sizeHint() const;

protected:
void initializeGL();
void paintGL();
void resizeGL(int width, int height);
};

#endif // GLWIDGET_H

glwidget.cpp

#include "glwidget.h"

GLWidget::GLWidget(QGLWidget *parent) :
QGLWidget(parent)
{
}

GLWidget::~GLWidget() {}

QSize GLWidget::minimumSizeHint() const {
return QSize(640, 480);
}

QSize GLWidget::sizeHint() const {
return QSize(800, 600);
}

void GLWidget::initializeGL() {
GLenum err = glewInit();
if (GLEW_OK != err) {
printf("GLEW error: %s\n", glewGetErrorString(err));
} else {
printf("Glew loaded; using version %s\n", glewGetString(GLEW_VERSION));
}

glClearColor(0.2f, 0, 0, 1.0f);
}

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

void GLWidget::paintGL() {
glClear( GL_COLOR_BUFFER_BIT );
}

最佳答案

有人告诉我这是因为QGLWidget的默认QGLFormat使用OpenGL版本1.0(查看GLEW的更改日志,似乎他们声称完全支持的最早版本是1.5)。尝试重写需要 QGLFormat 的 QGLWidget 构造函数,并向其传递一个使用您目标版本的 QGLFormat 实例。

对您的小部件的调用应类似于:

QGLFormat format;
format.setVersion(3,3); // or whatever version you are targeting.
format.setDoubleBuffer(true);

GLWidget * widget = new GLWidget(format);

关于qt - 带 Qt5 的 glewInit 返回缺少 GL 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317300/

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