Mac OS X, OpenGL und GLUT

A

Agmemon

Aktives Mitglied
Thread Starter
Dabei seit
05.11.2003
Beiträge
172
Reaktionspunkte
0
Vorweg, ich habe noch keine Ahnung von der Thematik, aber dennoch einige Fragen:

1) Ich habe hier ein Stück Code, das GLUT nutzt und die Bibliothek über
Code:
#include <GL/glut.h>
einbindet, genauso wie es auch in den man-Pages steht. Aber wenn ich den Code versuche mit gcc zu kompilieren, findet er den include nicht. Was muss ich machen?

2) Wenn ich GLUT in Verbindung mit ANSI C/C++ nutze, idt der Code dann einigermassen Plattform-Unabhängig? Also kann ich ihn unter OS X und Win kompilieren?

Gruß Agmemon
 
ist GLUT denn vorhanden? hast du schon mal versucht die opengl-beispiele vom apple zu kompilieren?
 
Glut ist da:

Code:
/System/Library/Frameworks/GLUT.framework
 
und wie sieht es mit den apple-beispielen aus? kompilieren die fehlerfrei?
 
ja, die Beispiele in xCode lassen sich Compilieren.

Dort wird aber
Code:
#include <GLUT/glut.h>
eingebunden.

Wenn ich das in meinem Code mache, bekomme ich folgende Ausgabe:

Code:
localhost:~/tmp alexander$ gcc uebung4.cpp -o uebung4
ld: Undefined symbols:
___gxx_personality_v0
_glBegin
_glClear
_glClearColor
_glColor3f
_glEnd
_glFlush
_glLoadIdentity
_glMatrixMode
_glVertex2fv
_gluOrtho2D
_glutCreateWindow
_glutDisplayFunc
_glutInit
_glutInitDisplayMode
_glutInitWindowPosition
_glutInitWindowSize
_glutMainLoop
 
und wenn du gcc noch "-framework GLUT" als parameter spendierst?
 
Code:
ocalhost:~/tmp alexander$ gcc uebung4.cpp -o uebung4 -framework GLUT
ld: /var/tmp//ccXpmwh9.o illegal reference to symbol: _glBegin defined in indirectly referenced dynamic library /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
ld: /var/tmp//ccXpmwh9.o illegal reference to symbol: _gluOrtho2D defined in indirectly referenced dynamic library /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
ld: /usr/lib/crt1.o illegal reference to symbol: __objcInit defined in indirectly referenced dynamic library /usr/lib/libobjc.A.dylib

Aber mit -Framework glut hat sich dann wohl meine zweite Frage erledigt, oder?
 
sorry, welche 2. frage? ob es plattformunabhängig kompilierbar ist, wenn ansi c/c++?
das sollte "eigentlich" ohne grössere probleme gehen! also ich hab hier bisher nur relativ simplen opengl-code ausprobiert, der aber problemlos sowohl unter windows, linux als auch macos funzt ... allerdings per xcode und nicht per hand.

ich empfehle dir auf alle fälle mal den einen oder anderen blick auf die tutoriale von NeHe zu werfen, falls du diese nicht ohnehin schon kennst -> http://nehe.gamedev.net/
 
Die nene Seite werde ich mir mal ansehen.

Die XCode Seite bringt mir nichts, da der Code wirklich unabhängig sein muß. Z.b. ohne Codeänderungen in ein VC++ 6.0 Projekt integrierbar sein. Ansonsten kann ich gleich VPC aufsetzen und es direkt unter VC++ schreiben. :(
 
ich verwende xcode und kann den code 1:1 auf vc ++ compilieren...
eine änderung:
ich muss die namen der header ändern aber das mach ich auch über ein #define und dann ifndef windows..... ... also nur 2 zeichen löschen und alles geht
 
du kannst es auch mit xcode schreiben und es bleibt trotzdem plattformunabhängig! ; )
mein code war mit visual studio 6 erzeugt und läuft auch unter xcode (nach projektreimport) ...
 
Passt nicht ganz rein: aber projektimport? kann ich die projekte untereinander öffnen? ich kopier immer die einzellnen quellcode dateien rüber.... bei mir klappt xcode und vc++ auch sehr gut!
 
jein ... ich meinte, dass ich in xcode die header + sourcen einmal importiert habe und wenn ich die dann unter windows brauche, dann kopiere ich halt nur header + sourcen zurück ... die jeweiligen projekt-settings bleiben dann in den jeweiligen projekt-/workspace-dateien
 
aha..alles klar!

mfg h.stony
 
-framework GLUT -framework OpenGL -Wl,/usr/lib/libobjc.A.dylib

Anhängen. :)

Bei den einbinden der Header-Dateien dann abfragen, welches System.
Also:

#ifdef _WIN32
#include <GL/glut.h>
#else
#include <GLUT/glut.h>
#endif

Für Windows und OS X. Kannst es auch umdrehen, also nach Apple fragen und dann entsprechend machen. Wie du willst. Weil das da wird nicht unter Linux laufen, da Linux auch GL/glut.h hat. Mir fällt bloß gerade nicht ein, wie man nach Apple-Systemen fragt. ;)
 
@nuke: wie wäre es über die cpu? ; )
 
@Nuke

Na auf die Idee mit dem define hätte ich ja auch kommen können. naja, manchmal steht man auf dem Schlauch. Auch habe ich Diene Parameter für gcc in einem anderen Thread gefunden und ausprobiert. Aber es funktioniert immer noch nicht:

Code:
localhost:~/tmp alexander$ gcc uebung4.cpp -o uebung4.cpp -framework GLUT -framework OpenGL -Wl,/usr/lib/libobjc.A.dylib

ld: Undefined symbols:
___gxx_personality_v0

Muss ich noch irgendwas einbinden?

@katana
Mit XCode bzw. ProjectBuilder gibt es noch ein anderes Problem: ich mag es nicht. Ich stehe halt auf dieses Consolen-Ding und benutze lieber gcc und make.
Und das mit VC++ mache ich auch nur, weil das in meinem GDV-Praktikum im Studium nunmal verlangt wird.
 
ok, dann versuche doch mit gnumake eine konfig zu erstellen, die für beide system funzt? mußt ja unter windows auch nicht den ms-compiler benutzen!

ist für die namen der frameworks nicht gross-/kleinschreibung relevant?
 
Leider schon. Wegen meinem Prof. Was anderes versteht er wahrscheinlich nicht. :(
 
Zurück
Oben Unten