Anzeige:
Ergebnis 1 bis 10 von 10

Thema: [OpenGL] Wozu GLUT, GLU, GLX, DRI, Mesa???

  1. #1
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665

    Question [OpenGL] Wozu GLUT, GLU, GLX, DRI, Mesa???

    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...

  2. #2
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    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
    Geändert von DanDanger (19-07-2003 um 01:53 Uhr)
    ------------------------------------
    DanDanger

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665

    thx :)

    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:

    Code:
    $ 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)

  5. #5
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    Hast Du auch die richtigen Versionen installiert ????
    Versuch mal, Programme zu kompilieren, die kein GLUT benutzen.......
    ------------------------------------
    DanDanger

  6. #6
    Registrierter Benutzer
    Registriert seit
    24.06.2003
    Beiträge
    486

  7. #7
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    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/Tutoria...OpenGL_Pg1.htm
    die glut-version will nicht

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

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

    ich soll glut neu compilieren - also hab ich die datei http://www.opengl.org/developers/doc...lut-3.7.tar.gz von der website http://www.opengl.org/developers/doc...t/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:

    Code:
    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...
    so ein schrott

    hier nochmal die tolle readme:
    Code:
    	  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*

  8. #8
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    (...)
    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
    ------------------------------------
    DanDanger

  9. #9
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    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

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

  10. #10
    Registrierter Benutzer
    Registriert seit
    19.04.2003
    Beiträge
    194
    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
    Going to church does not make a person religious, nor does going to school make a person educated, any more than going to a garage makes a person a car.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •