3 Stimmen

QGLWidget funktioniert unter Mac OS X Lion nicht korrekt.

Wie Sie sehen - ich habe keine Ahnung, warum es überhaupt nicht funktioniert.

Wenn das Programm läuft, wird es so aussehen: broken display

Ich benutze qt4-mac(v4.8.2) von macports. Es scheint, dass das Paket vorkompiliert war.

Und hier ist der Quellcode:

main.cpp:

#include 

#include 

#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 

#include 
#include 
#include 
#include 

#include 

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 

#include "GLPlayerWindow.hpp"
#include 

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) {
}

Und die .pro-Datei:

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

1voto

wecing Punkte 534

Ok Leute, wenn ihr dasselbe Problem unter Mac habt, versucht, die GL-Implementierung unter /System/Library/Frameworks/AGL.framework/ zu verlinken. Siehe diesen Beitrag für Details: Warum funktioniert glOrtho() unter Mac, aber gluOrtho2D() nicht?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X