2012-08-31 82 views
3

正如你所看到的 - 我不知道它爲什麼不能工作。QGLWidget在Mac OS X下無法正常工作Lion

當程序運行時,會是這樣的:broken display

我使用的MacPorts從QT4-MAC(v4.8.2)。看來這個軟件包是預先編譯好的。

而這裏的源:

main.cpp中:

#include <iostream> 

#include <QApplication> 

#include "GLPlayerWindow.hpp" 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    GLPlayerWindow window; 
    window.show(); 
    window.resize(800, 600); 

    return app.exec(); 
} 

GLPlayerWindow.hpp:

#ifndef __GLPLAYERWINDOW__HPP__DEFINED__ 
#define __GLPLAYERWINDOW__HPP__DEFINED__ 

#include <string> 

#include <QGLWidget> 
#include <QMouseEvent> 
#include <QKeyEvent> 
#include <QTimer> 

#include <SimpleAV_SDL.h> 

class GLPlayerWindow : public QGLWidget 
{ 
    Q_OBJECT 

public: 
    GLPlayerWindow(QWidget *parent = NULL); 
    ~GLPlayerWindow(); 

protected slots: 
    void paintGL(); 

protected: 
    void initializeGL(); 
    void resizeGL(int w, int h); 
    void keyPressEvent(QKeyEvent *event); 
}; 

#endif 

GLPlayerWindow.cpp:

#include <iostream> 

#include "GLPlayerWindow.hpp" 
#include <GL/glu.h> 

GLPlayerWindow::GLPlayerWindow(QWidget *parent) 
    : QGLWidget(parent) { 
    setMouseTracking(true); 
} 

GLPlayerWindow::~GLPlayerWindow() { 
} 

void GLPlayerWindow::initializeGL() { 
    glDisable(GL_DEPTH_TEST); 
    glDisable(GL_COLOR_MATERIAL); 
    glEnable(GL_TEXTURE_2D); 
    glEnable(GL_BLEND); 
    glEnable(GL_POLYGON_SMOOTH); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
    glClearColor(1.0f, 0.0f, 0.0f, 0); 
} 

void GLPlayerWindow::resizeGL(int w, int h) { 
    glViewport(0, 0, w, h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluOrtho2D(0, w, 0, h); // set origin to top left corner 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
} 

void GLPlayerWindow::paintGL() { 
    glClear(GL_COLOR_BUFFER_BIT); 
    return; 
} 

void GLPlayerWindow::keyPressEvent(QKeyEvent* event) { 
} 

而且的.pro文件:

QT += opengl 
TEMPLATE = app 
TARGET = 
DEPENDPATH += . 
INCLUDEPATH += . 

CONFIG += link_pkgconfig 
PKGCONFIG += libavcodec libavformat libavutil libswscale SimpleAV_SDL sdl SDL_mixer gl glu 

# LIBS += `pkg-config --libs SimpleAV_SDL SDL_mixer sdl` 
# CFLAGS += -g -O2 -Wall -W `pkg-config --cflags SimpleAV_SDL SDL_mixer sdl` 
CFLAGS += -g -O2 -Wall -W 

# Input 
HEADERS += GLPlayerWindow.hpp 
SOURCES += GLPlayerWindow.cpp main.cpp 

回答

相關問題