【发布时间】:2015-05-08 13:55:09
【问题描述】:
我在 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
在我的配置文件中,我成功链接到 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 终止。 所以只是一个程序崩溃,没有任何错误信息。谁能帮我解决这个问题?
【问题讨论】: