QT/OpenGL Problem

Verschiedenes zu Qt
KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

QT/OpenGL Problem

Beitrag von KravenZ »

Hi Leute,

Hab mal wieder ien Probelm und zwar folgendes. Ich habe eine QT Anwendung erstellt und ein OpenGl Widget reingepackt. nur wollte ich OpenGL Funktionen benutzen aber ich erhalte immer die Fehlermeldung... undefined reference in (irgendeine OpenGL Funktion)

Hier ist meine Widgetklasse:

Code: Alles auswählen

#ifndef _OGL_WIDGET_H_
#define _OGL_WIDGET_H_
#include <qgl.h>

namespace SWP0607 {


class OGLWidget : public QGLWidget
{
       Q_OBJECT
   

public:
       //! Default constructor
       OGLWidget( QWidget* parent = 0, const char* name = 0 );

       //! Destructor
       ~OGLWidget();

protected:
   void initializeGL();
   void resizeGL(int w, int h);
   void paintGL();

private:
   
};

}

#endif

Code: Alles auswählen

#include <GL/gl.h>
//#include <GL/glu.h>
//#include <GL/glx.h>
//#include <GL/glaux.h>
#include "OGLWidget.hh"


namespace SWP0607 {

OGLWidget::OGLWidget( QWidget* parent, const char* name )
    : QGLWidget( parent, name )
{

}


OGLWidget::~OGLWidget()
{

}

void OGLWidget::initializeGL()
{
         glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}

void OGLWidget::resizeGL(int w, int h)
{

}

void OGLWidget::paintGL()
{

}

} 
Ich denke mal dass ich irgendeine Library linken muss oder?
Nur leider habe ich keine genaue Ahnung welche und was ich noch weinger weiss ist wie man mit qmake Librarys linken kann. Dachte erstmal, dass es fast alles automatisch macht aber dem ist anscheinend nicht so. Auf der Trolltech seite wurde ich auch nicht fündig. Da stand auch etwas davon dass QT OpenGl automatisch erkennt hmm...
Weisst vielleicht einer wie das geht?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Haste in deiner Projektdatei OpenGL "aktiviert"?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Und QtOpenGL dazu gelinkt?
KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

Beitrag von KravenZ »

ne ich glaube beides trifft nicht zu ^^ welche sachen muss ich dazulinken und wie?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

KravenZ hat geschrieben:welche sachen muss ich dazulinken und wie?
Das stand schon in deinem gehijackten Thread:
http://qtforum.de/forum/viewtopic.php?t=2097#11140
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

Beitrag von KravenZ »

Hallo,

Hab jetzt make -lXext und qmake -lXext ausprobiert aber beide klappt nicht. hab echt keine Ahnung was ich noch ausprobieren kann. Wiess echt nicht wie ich mit qmake linken kann.
KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

Beitrag von KravenZ »

Ah ich glaube es klappt jetzt. hab mal in der Makefile flogendes gesetzt:
LINK = g++ -lGL
Auf jeden Fall mekert der Compiler nicht merh beim linken. Mal schauen ob alles weitere klappt ;)
KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

Beitrag von KravenZ »

Ok es hat wirklich geklappt. BIG THX:
KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

Beitrag von KravenZ »

Hab eine neue Frage. ^^

Kann es sein, dass OGL in QT als Koordinaten nur Werte von 0 - 1 annimmt?
Wenn ich folgendes schreibe dann geht das Dreieck bis an die Ränder:

Code: Alles auswählen

glBegin(GL_TRIANGLES); // Ein Dreieck soll gezeichnet werden
    glColor3f(0.0f,0.0f,1.0f); // es soll soll blau werden
    glVertex3f( 0.0f, 0.1f, 0.0f); // Die obere Ecke des Dreiecks
    glVertex3f(-1.0f,-1.0f, 0.0f); // unten links
    glVertex3f( 1.0f,-1.0f, 0.0f); // unten rechts
  glEnd(); 
Kann man das irgendwie ändern?
Ich will eigentlich ganz normal mit Koordinaten arbeiten können. Dabei sollen diese im Bereich von 0-QGLWidgetbreite und 0-QGLWidgethöhe liegen.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

KravenZ hat geschrieben:Kann es sein, dass OGL in QT als Koordinaten nur Werte von 0 - 1 annimmt?
Will da jemand OpenGL nutzen, ohne sich vorher über 3D informiert zu haben? Hier ein OpenGL-Tutorial, sollte helfen.
KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

Beitrag von KravenZ »

Hab meinen Fehler befunden ^^ Hatte die Perspektive falsch eingestellt gehabt.

Aber hab nun ein weiteres Problem^^ Alos ich versuche gerade das NeHe Tutorial durchzuarbeiten. Aber irgendwie wird bei mir glaux.h nicht gefunden. Ich arbeite unter Linux und da dachte ich dass es vielleicht nur unter Windows funtkioniert aber das würde gegen die Plattformunabhängigkeit von OpenGL sprechen. Bei google finde ich auch nur Berichte zu Windows und glaux.h. Ich wollte mit Texturen arbeiten aber ich weiss nicht wie ich es ohne glaux hinkriegen soll.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Bei den OpenGL-Examples müsste eins mit Texturen dabei sein. Tut es das auch nicht?
KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

Beitrag von KravenZ »

In meinem QT Ordner sind keine Examples :/
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

KravenZ
Beiträge: 26
Registriert: 14. November 2006 16:33

Beitrag von KravenZ »

THX werde das gleich mal direkt durcharbeiten.

Aber wie es so ist hab ich natürlich das nächste Problem. Hab mir jetzt mal eine eigene Klasse MyVector3Df geschrieben und die in Header und cc datei aufgeteilt. In der cc Datei stehen die Definitionen der Methoden etc. Bei de liegen im Hauptordner des Projekts. Nun möchte ich auf die Klasse zugrifen und binde myvector3df.h ein. Ich kann dann zwar ein Klassenobjekt erstellen aber sobald ich dann eine Methode aufrufen will erhalte ich:

Code: Alles auswählen

/home/bulczak/Desktop/Softwarepraktikum/OGLWidget.cc:21: undefined reference to `MyVector3Df::length()'
/home/bulczak/Desktop/Softwarepraktikum/OGLWidget.cc:21: undefined reference to `MyVector3Df::length()'
obwohl sich die cc Datein mit den Definitionen auch im Ordner befindet. Muss ich vielleicht irgndwie auch die cc Datei linken? Bin halt von Windows gewohnt, dass man das eigentlich nicht muss aber bei Linux ist ja alles irgendwie bißchen anders :)
Antworten