Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [OpenGL] Wozu GLUT, GLU, GLX, DRI, Mesa???



BLUESCREEN3D
19-07-2003, 00:24
Soweit ich das bis jetzt verstanden habe, sind GLUT, GLU, GLX, DRI, Mesa nur irgendwelche Erweiterungen/Toolkits für OpenGL, mit denen einige Dinge einfacher gehen - oder nicht?
Kann ich in OpenGL auch uneingeschränkt 3D-Applikationen schreiben, ohne diese Erweiterungen zu benutzen, oder sind die für einige Dinge unerlässlich???
Womit sollte ich anfangen? Ich will am liebsten ganz ohne sowas auskommen und "nur" OpenGl benutzen...

DanDanger
19-07-2003, 01:50
Hi,


Soweit ich das bis jetzt verstanden habe, sind GLUT, GLU, GLX, DRI, Mesa nur
irgendwelche Erweiterungen/Toolkits für OpenGL, mit denen einige Dinge einfacher
gehen - oder nicht?

JA, stimmt Haargenau :-)

also :
Du kannst "pures" OpenGL in allen deinen Programmen (auch Kommerzielle Programme) verwenden. Du musst auch den Quellcode Deiner OpenGL-Proggis nicht veröffentlichen. Es gibt keine Lizenskosten, etc. Der Quellcode von OpenGL ist AFAIK auch frei verfügbar. Die einzigen Leute, die Lizensgebühren an OpenGL abdrücken müssen, sind die Hardwarehersteller, die ihre Grafikkarten mit so einem schmucken "This Graphic-Hardware Supports OpenGL" - Aufkleber versehen wollen, und halt "verifizierte" OpenGL-Treiber für ihre Karten herausbringen wollen.

GLU ist eine "Erweiterung" von OpenGL. GLU sind im Grunde genommen nur sehr Komplex Programmierte OpenGL-Befehle (also auch "pures" OpenGL), die einem das Leben ECHT leichter machen. GLU ist auch frei verwendbar (und fast ALLE OpenGL Programme, die ich kenne, benutzen es auch).

GLUT fällt etwas aus dem Rahmen.
OpenGL selber ist nur eine Grafikbibliothek, bietet also keine Möglichkeiten, irgendwelche Benutzereingaben (Tastatur, Maus, etc.) abzufangen und/oder zu verarbeiten. Da springen dan meisten externe Bibliotheken wie z.B. DirectX (bzw. DirectInput) unter Windows, bzw. SDL unter Linux ein.
Um auch hier eine einheitliche Schnittstelle zu schaffen, gibt es GLUT.
Leider steht GLUT unter einer SEHR SELTSAMEN Lizens (kommerziell), und wird deshalb fast nie Benutzt (ich selber Rate auch von GLUT ab, es geht auch locker ohne).

MESA ist eine freie Implementierung der OpenGL-Bibliothek.
Also eine art "Treiber" der auch OpenGL-Befehele versteht, aber halt nicht von den "OpenGL-Leuten" (also Silicon Graphics) Programmiert wurde.
Wenn du keine nativen OpenGL-Treiber für deine Hardware auftreiben kannst, ist MESA ne' echte Alternative (läuft FAST genauso gut/schnell).


DRI steht für Direct Rendering Interface, und kommt eigentlich aus Microsoft's DirectX.
DRI sollte eigentlich (zumindest unter Windows) zusammen mit DirectX, OpenGL ablösen.


Dir steht es frei, in deinem Programmen die o.g. erweiterungen zu nutzen, oder nicht.
Du "brauchst" keine der o.g erweiterungen, um OpenGL-Programme zu erstellen, aber so Sachen wie GLU (NICHT GLUT) machen dir das Leben halt wirklich einfacher.



Wenn Du Anfangen willst, OpenGL zu Lernen, besuche mal folgende Seiten :

http://www.OpenGL.org (Offizielle OpenGL Homepage)
http://nehe.gamedev.net ( Die BESTE Seite für OGL-Tut. die ich kenne )
http://gametutorials.com (Sehr gute Tutorials, Wahrscheinlich ist die Seite am Besten geeignet , um OpenGL zu lernen, weil die Tutorials für Anfänger sehr gut Durchdacht sind)

Sehenswert (wenn auch eher was für "Fortgeschrittene" ) sind auch :
http://www.cone3d.gamedev.net
http://www.flipcode.com
http://www.gamedev.net
http://www.gameresource.de
http://www.gameasutra.com

Hoffe das hilft erstmal

Gruss
DanDanger

anda_skoa
19-07-2003, 13:25
Original geschrieben von DanDanger
DRI steht für Direct Rendering Interface, und kommt eigentlich aus Microsoft's DirectX.
DRI sollte eigentlich (zumindest unter Windows) zusammen mit DirectX, OpenGL ablösen.


DRI ist zwar die Direct Rendering Infrastructure, soweit richtig, hat aber weder mit Microsoft, noch mit Windows zu tun.
DRI ist ein Modul von XFree, dass es einem X Client ermöglich, direkt auf die Grafikkarte des Systems zuzugreifen, also mehr oder weniger gerade durch den Xserver hindurch.

Ist also die Vorraussetzung für Hardwarebeschleunigtes Rendering unter X11.
#> glxinfo | grep "direct rendering"

Siehe http://dri.sf.net/

Ciao,
_

BLUESCREEN3D
19-07-2003, 14:44
dann werde ich wohl OpenGL und GLU benutzen...

was die Tutorials angeht: Ich habe immernoch Probleme die Beispiel-Programme zu compilieren, z.B. habe ich gestern versucht, das Beispiel-Proggie aus lesson02 con den NeHe-Tutorials zu compilieren und kriege folgenden Fehler:


$ make
gcc -Wall -I/usr/include/ -o lesson2 -L/usr/X11R6/lib lesson2.o -lX11 -lXi -lXm
u -lglut -lGL -lGLU -lm
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined referenc
e to `glXBindChannelToWindowSGIX'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined referenc
e to `glXQueryChannelDeltasSGIX'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined referenc
e to `glXChannelRectSyncSGIX'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined referenc
e to `glXChannelRectSGIX'
/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../libglut.so: undefined referenc
e to `glXQueryChannelRectSGIX'
collect2: ld returned 1 exit status
make: *** [lesson2] Fehler 1

ich hab keine ahnung, was ich dagegen tun kann, da ich auch schon alle pakete, die ich laut readme brauche, installiert habe: Mesa, Mesa GLUT, Mesa-devel, Mesa GLUT-devel
(habe Red Hat 9.0)

DanDanger
19-07-2003, 16:20
Hast Du auch die richtigen Versionen installiert ????
Versuch mal, Programme zu kompilieren, die kein GLUT benutzen.......

wraith
19-07-2003, 16:31
@BLUESCREEN3D
https://sourceforge.net/forum/forum.php?thread_id=879028&forum_id=76063

BLUESCREEN3D
19-07-2003, 19:53
Original geschrieben von DanDanger
Hast Du auch die richtigen Versionen installiert ????
Versuch mal, Programme zu kompilieren, die kein GLUT benutzen.......
@1.: ja
@2.: geht - z.b. die sdl-version von dem ersten proggi von http://www.gametutorials.com/Tutorials/OpenGL/OpenGL_Pg1.htm
die glut-version will nicht


Original geschrieben von wraith
@BLUESCREEN3D
https://sourceforge.net/forum/forum.php?thread_id=879028&forum_id=76063
goil, das ist ja genau das problem das ich auch habe - thx :)

aber die lösung will nicht so ganz... :mad:

ich soll glut neu compilieren - also hab ich die datei http://www.opengl.org/developers/documentation/glut/glut-3.7.tar.gz von der website http://www.opengl.org/developers/documentation/glut/index.html#2 runtergeladen und entpackt
im entpackten ordner linux gibt es eine datei "README", die beschreibt, was ich tun soll und da fangen die probs schon an: die readme ist total fürn a**** - da steht andauernd was von einem pfad "$GLUT_HOME" - die umgebnungsvariable habe ich nicht - toll...
bin dann erstmal ein verzeichnis zurückgegegangen und habe "./mkmkfiles.imake" ausgeführt, wie es in punkt 2 der readme steht
dann habe ich mit punkt 4 weitergemecht: "make"

und jetzt kommts: die compilierung bricht ab mit folgender fehlermeldung:


gcc -m32 -o test21 -O2 -pipe -march=i386 -mcpu=i686 -fno-strength-reduce -fno-strict-aliasing -pipe -L/usr/X11R6/lib test21.o ../../lib/glut/libglut.a -lGLU -lGL -lXmu -lXt -lSM -lICE -lXext -lX11 -lXi -lXext -lX11 -lm
../../lib/glut/libglut.a(glut_vidresize.o)(.text+0xd5): In function `glutVideoResizeGet':
: undefined reference to `glXQueryChannelRectSGIX'
../../lib/glut/libglut.a(glut_vidresize.o)(.text+0x1d8): In function `glutVideoResizeGet':
: undefined reference to `glXQueryChannelDeltasSGIX'
../../lib/glut/libglut.a(glut_vidresize.o)(.text+0x28d): In function `glutSetupVideoResizing':
: undefined reference to `glXBindChannelToWindowSGIX'
../../lib/glut/libglut.a(glut_vidresize.o)(.text+0x2f6): In function `glutStopVideoResizing':
: undefined reference to `glXBindChannelToWindowSGIX'
../../lib/glut/libglut.a(glut_vidresize.o)(.text+0x346): In function `glutVideoResize':
: undefined reference to `glXChannelRectSyncSGIX'
../../lib/glut/libglut.a(glut_vidresize.o)(.text+0x381): In function `glutVideoResize':
: undefined reference to `glXChannelRectSGIX'
../../lib/glut/libglut.a(glut_vidresize.o)(.text+0x3c7): In function `glutVideoPan':
: undefined reference to `glXChannelRectSyncSGIX'
../../lib/glut/libglut.a(glut_vidresize.o)(.text+0x402): In function `glutVideoPan':
: undefined reference to `glXChannelRectSGIX'
collect2: ld returned 1 exit status
make[2]: *** [test21] Fehler 1
make[2]: Verlassen des Verzeichnisses Verzeichnis »/home/user/pkgs/glut-workaround/glut-3.7/test/glut«
make[1]: *** [all] Fehler 2
make[1]: Verlassen des Verzeichnisses Verzeichnis »/home/user/pkgs/glut-workaround/glut-3.7/test«
make: *** [all] Fehler 2

das ist so ziemlich die gleiche fehlemeldung, die ich auch beim compilieren von den glut-beispiel-proggis hatte... :eek:
so ein schrott :mad:

hier nochmal die tolle readme:


Files For Making a Mesa/GLUT System For Linux ELF

Version 0.0.6

Peter F. Martone
updated by Mark Kilgard (for GLUT 3.7)

//************************************************** **********

There are three files included in this archive:

Glut.cf -- file required by imake-- use this to replace the
stock version that came with GLUT.

Makefile -- Makefile required to build ELF library, belongs in
the $GLUT_HOME/lib/glut/. directory.

path -- the line required for ld.so to find the libraries at
run-time. Add this to your .profile file.

//************************************************** **********

The steps to make this work are:

1) Change into $GLUT_HOME/. and make a backup copy of the
Glut.cf file. Then, take the copy from this archive and move it
into $GLUT_HOME.

2) Run the script to build all the makefiles:

./mkmkfiles.imake

3) Change into $GLUT_HOME/lib/glut/. and make a backup copy of
the Makefile. Now, take the Makefile out of the archive and
replace the old one.

4) WHILE STILL IN THE $GLUT_HOME/lib/glut/. DIRECTOR, RUN:

make

This should build the shared library 'libglut.so.3.7'.

IF YOU HAVE PROBLEMS WITH HEADER FILE DEPENDENCIES, try
doing:

make depend
make

This should rebuild the Makefile dependencies.

If this does not work, remove all the lines in "Makefile" below
the line saying "DO NOT DELETE" (yes, disregard what the line
says). Then try "make depend; make"

5) Make two symbolic links:

ln -s libglut.so.3.7 libglut.so.3
ln -s libglut.so.3.7 libglut.so

6) Now, back up to $GLUT_HOME/. and:

make

This will make all the example programs.

7) Add the line from archive file 'path' to your .profile, or
better to your systemwide (/etc/profile). Then logout out and
back in again (to refresh your path.)

*hardly confused* :confused:

DanDanger
20-07-2003, 01:41
(...)
IF YOU HAVE PROBLEMS WITH HEADER FILE DEPENDENCIES, try
doing:

make depend
make

This should rebuild the Makefile dependencies.

If this does not work, remove all the lines in "Makefile" below
the line saying "DO NOT DELETE" (yes, disregard what the line
says). Then try "make depend; make"
(...)



Hast Du denn die "make depend" Sachen aus der README mal ausprobiert ??
Wenn's absolut nicht Kompilieren will, sollten es aber auch die Precompilierten Packete von der GLUT-HP tun....

PS: Wenn die GLUT-Sache nicht funzt, ist das ja nicht soo schlimm, da GLUT ja eh' nicht so toll ist.
Nimm statdessen lieber SDL, etc. Auch Die Windows-Ports von SDL laufen Prima, und genügend SDL-OpenGL Tut.'S gibt's im Netz auch (z.T. auch ziemlich gute auf der SDL-Homepage http://www.libsdl.org , oder die Deutsche Version unter : http://www.libsdl.de )

Gruss
DanDanger

BLUESCREEN3D
20-07-2003, 02:28
ich habe "make" einfach im falschen verzeichnis ausgeführt - das musste manin lib/glut/ machen... jetzt läuft es ohne fehler, erstellt aber nicht die libglut.so... ka, warum :confused:

ansonsten muss es wohl wirklich erstmal ohne glut gehen...

Silver
08-10-2003, 19:31
Hi!


Bin jetzt auch zum Entschluss gekommen,auch OpenGl zu lernen (natrülcih unter Linux ;) ). Was wäre wohl die bessere Entscheidung OpenGl in Verbindung mit SDL oder Glut? GLX käme eher nicht in Frage, weil es für Windoof schwerer zu portieren wäre, und es sollte doch leichter portierbar sein. SDL würde mir sehr gefallen, weil ich schon ein wenig Erfahrung damit gemacht habe, aber (leider?) kenne ich nicht Glut!

Macht wer SDL in Verbindung mit OpenGl?

mfG