我在Qt中设置GLEW时出现问题,我正在使用Microsoft Visual C ++ 2012-Compiler。这是我的班级
#ifndef MYQOPENGLWIDGET_H
#define MYQOPENGLWIDGET_H
#define QT_NO_OPENGL_ES_2
#define GLEW_STATIC
#include <GL/glew.h>
#include <QGLWidget>
#include <QMessageBox>
#include <iostream>
class MyQOpenGLWidget : public QGLWidget{
public:
MyQOpenGLWidget(QWidget *parent = 0): QGLWidget(parent){}
void initializeGL()
{
GLenum err = glewInit();
if(err != GLEW_OK)
{
QMessageBox::information(0, "Error!", QString("Failed to initialize GLEW ") + reinterpret_cast<const char*>(glewGetErrorString(err)), QMessageBox::Yes );
exit(1);
}
else
{
QMessageBox::information(0, "Success!", QString("Succeded to initialize GLEW! "), QMessageBox::Yes );
}
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glEnable(GL_DEPTH_TEST);
std::cout << "Leaving initializeGL" << std::endl;
}
void paintGL()
{
std::cout << "paintGL()" << std::endl;
}
void resizeGL(int w, int h)
{
if(h == 0)
h=1;
glViewport(0,0,w,h);
std::cout << "resizeGL()" << std::endl;
glOrtho(-1, 1, -1, 1, -1, 1);
}
};
#endif // MYQOPENGLWIDGET_H
在我的pro文件中,我成功链接到GLEW(它包含在gltools.lib中,它来自OpenGLSuperbible)(顺便说一下,我在这里使用的库必须是正确的,因为我有一个我创建的工作项目使用Visual Studio和相同的编译器。)
QT += core gui widgets
QT += opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = untitled2
TEMPLATE = app
INCLUDEPATH += "C:/Users/fin/Documents/GLEWTEst/include"
LIBS += "C:/Users/fin/Documents/GLEWTEst/lib/gltools.lib"
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h \
myqopenglwidget.h
FORMS += mainwindow.ui
DISTFILES += \
../build-untitled2-Desktop_Qt_5_4_1_MSVC2012_OpenGL_32bit-Debug/debug/untitled2.exe
现在发生的是,程序启动,并正确初始化GLEW并调用initializeGL(),resizeGL()然后调用paintGL() 然后它说程序以退出代码1终止。 所以只是一个没有任何错误消息的程序崩溃。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
我通过删除
解决了这个问题QMessageBox::information(0, "Success!", QString("Succeded to initialize GLEW! "), QMessageBox::Yes );
来自上面的代码。但是,我不知道为什么会这样。