undefined reference to gtk_gl_init

Gast #1659666
Lesenswert?

Hallo Spezialisten,

ich spiele seit kurzem etwas mit dem GTK herum.
Ich habe nun CodeBeispiele gefunden, welche OpenGL eingebunden haben.
Ich habe alle Header, welche in diesem Code angegeben sind eingebunden.

Leider schlaegt die GL-Initialisierung fehl.
Die Initialisierung erfolgt ueber:
1
 gtk_gl_init (int    *argc,char ***argv);

Doch leider bekomme ich immer wieder die Meldung:
1
undefined reference to gtk_gl_init

Ich programmiere in C auf Windows mit Code::Blocks


Kann jemand helfen.

KidMoritz
Gast #1659924
Lesenswert?

Wenn ich mich eben richtig informiert habe, haette ich da "glut" als 
opengl lib. Wenn ich das richtig verstehe.
glut wird, wie ich gelesen habe, aber nicht weiterentwickelt.

Welche lib kann ich denn da noch verwenden?
#1659975
Lesenswert?

GLUT wird zwar nicht mehr weiterentwickelt, eignet sich aber durchaus 
noch zum Erlernen der OpenGL. Ein Großteil der Dokumentation und 
öffentlich zugänglichen Code Beispiele, wie deins wahrscheinlich auch, 
basiert ohnehin auf der 1er und 2er Version von OpenGL.
Will man State of the Art und hierbei insbesondere größere Projekte 
programmieren, greift man in dem Fall auf die nativen Window Manager 
zurück, also XGL und WGL beispielsweise.
Gerade in Bezug auf GTK könntest du dir noch die GTK GL Extension 
(http://projects.gnome.org/gtkglext/";, GtkGlExt googlen) anschauen. 
Diese API wird meines Wissens nach auch noch aktuell weiterentwickelt 
und ist zudem eng mit GTK verknüpft. Dafür gibt es auch gute 
Codebeispiele, die einen den Einstieg erleichtern.
Gast #1660420
Lesenswert?

Hallo Jean G.

die ganzen Dateien der GtkGlExt habe ich in die zugehoerigen Ordner von 
Code::Blocks kopiert.
Reichen diese aus um OpenGl nutzen zu koennen?

In den Linkersettings habe ich den Pfad fuer die Glut32.lib angegeben.

Aber das scheint noch nicht zu reichen.
Wie kann ich herrausfinden, welche lib mir die Funktionen bereitstellt, 
welche ich brauche?
Gast #1660574
Lesenswert?

So nun funktioniert es. Ich denke, dass ich die GTK GL Extension nun 
richtig eingebunden habe.
Da hatten noch einige Libraries gefehlt.

Fuer interessenten:

Die Funktion
1
gtk_gl_init
  ist zu finden in der

libgtkglext-win32-1.0.dll.a

Da ich Glut nicht brauche - Greife ich da auf die WGL/XGL zu???
In dem kleinen Beispiel ist die
1
#include <windows.h>
 eingebunden.

Waere ich plattformunabhaengig, wenn ich Glut oder auch z.B. Mesa 
verwenden wuerde?

Ist es ueberhaupt sinnvoll sich mit GTK auf diese Art der Fenster- und 
Grafikprogrammierung tiefergehend einzulassen?
Im Moment kann ich nur in C programmieren.


Danke und Gruss
#1660658
Lesenswert?

>Waere ich plattformunabhaengig, wenn ich Glut oder auch z.B. Mesa
>verwenden wuerde?
>
>Ist es ueberhaupt sinnvoll sich mit GTK auf diese Art der Fenster- und
>Grafikprogrammierung tiefergehend einzulassen?
>Im Moment kann ich nur in C programmieren.

OpenGL ist per se plattformunabhängig. Problem ist die Verbindung 
zwischen OpenGL und dem zugrunde liegenden Betriebssystem. Hier nimmt 
dir GTK einiges an Arbeit ab, beispielsweise die Erstellung eines 
Renderkontexts oder auch Pufferverwaltung. GLUT ist ebenfalls 
plattformunabhängig (wobei der Begriff Plattformunabhängigkeit etwas 
irreführend ist), SDL ebenso. Wie sinnvoll das Ganze ist, hängt von 
deinem angestrebten Ziel ab bzw. was du programmieren möchtest.
Mit der GTK (GLUT/SDL/...) Variante kannst du ein sehr großes Spektrum 
abdecken, da die GtkGlExt sich eben nur um ein paar grundlegende Dinge 
kümmert und du danach ohnehin (etwas eingeschränkt) direkt die OpenGL 
Funktionen nutzt.
Für den Anfang kann man sich mit diesen APIs auf Monate beschäftigen und 
respektable Ergebnisse erzielen, dann bei Bedarf auf andere Varianten 
umsteigen (GLX, WGL, AGL ...). Sie erleichtern einen den Einstieg, da 
man sich ersteinmal nicht um die Verbindung zwischen OpenGL und 
Betriebssystem kümmern muss, sondern man sich mit der OpenGL und deren 
Mathematik auseinandersetzen kann.
Letztendlich hängt es von deinen Plänen ab.

>Da ich Glut nicht brauche - Greife ich da auf die WGL/XGL zu???
>In dem kleinen Beispiel ist die
>
>#include <windows.h>
>
>eingebunden.

WGL (Windows Graphics Library)
Gast #1660731
Lesenswert?

Danke fuer deine umfangreiche Erlaeuterung zu diesem Thema.

>Wie sinnvoll das Ganze ist, hängt von
>deinem angestrebten Ziel ab bzw. was du programmieren möchtest.

Spieleprogrammierung wirds wohl eher nicht werden.
Bin mehr Technikversiert.
Maschinenbau-Bedienpanels/Visualisierung von 
Kenngroessen/Bildverarbeitung o.ae.so in diese Richtung moechte ich 
meine Reise antreten.
Wahrscheinlich gibt es fuer solche Anwendungen andere Moeglichkeiten, 
aber da habe ich bisher noch keinen Einblick.
Und einen HighEnd 3D Renderer braucht man da sicher auch nicht.
Evtl. hats du da noch paar Tipps oder Hinweise dazu.

Aber erstmal vielen Danke fuer deine Worte.
Gast #1664536
Lesenswert?

KidMoritz schrieb:
> Danke fuer deine umfangreiche Erlaeuterung zu diesem Thema.
>
>>Wie sinnvoll das Ganze ist, hängt von
>>deinem angestrebten Ziel ab bzw. was du programmieren möchtest.
>
> Spieleprogrammierung wirds wohl eher nicht werden.
> Bin mehr Technikversiert.
> Maschinenbau-Bedienpanels/Visualisierung von
> Kenngroessen/Bildverarbeitung o.ae.so in diese Richtung moechte ich
> meine Reise antreten.

Ob du da wirklich mit OpenGL glücklich wirst, ist die Frage. OpenGL ist 
doch eher low-level. Für derartige Visualisierungen gibt es 
Bibliotheken, die die für sowas benötigte Funktionialität auf höherem 
Level zur Verfügung stellen. Die wiederum können dann intern auf 
low-level-Frameworks wie z.B. OpenGL aufsetzten.
Gast #1666593
Lesenswert?

>Für derartige Visualisierungen gibt es
>Bibliotheken, die die für sowas benötigte Funktionialität auf höherem
>Level zur Verfügung stellen.

Welche Bibliotheken sind das.
Werden die von Windows schon bereitgestellt?
Oder meinst du MESA bzw. Cairo in der Art.
Oder sind die auch in GtkGlExt?

KidMoritz
Gast #1668070
Lesenswert?

Ok.

Ich denke, dass ich es so weit verstanden habe.


>Für derartige Visualisierungen gibt es
>Bibliotheken, die die für sowas benötigte Funktionialität auf höherem
>Level zur Verfügung stellen. Die wiederum können dann intern auf
>low-level-Frameworks wie z.B. OpenGL aufsetzten.

Über die GtkGlExt (HighLevleBibliotheken) greife ich auf die LowLevel 
GrafikBibliotheken von OpenGl zu.


"GTK+ uses the Cairo drawing API" ist das das gleiche Prinzip?
HighLevel (GTK) -> LowLevel (Cairo)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren