【问题标题】:Setting up GLEW with QGLWidget使用 QGLWidget 设置 GLEW
【发布时间】: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 终止。 所以只是一个程序崩溃,没有任何错误信息。谁能帮我解决这个问题?

【问题讨论】:

    标签: c++ qt opengl glew


    【解决方案1】:

    我通过删除解决了问题

    QMessageBox::information(0, "Success!", QString("Succeded to initialize GLEW! "), QMessageBox::Yes );
    

    从上面的代码。但是我不知道这是为什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多