Ja ich weiß das ist eigentlich das DELPHIgl Forum, aber hier sind ja auch ziemlich viele C / C++ler.
Ich habe Probleme Header, libs und dlls für OpenGL und libs und dlls für FreeGlut (jaja, ich weiß SDL ist besser...) zu finden.
Bei der offiziellen OpenGL-Seite finde ich nur eine gl3.h und paar Extension Headers (glext.h und glxext.h). Bei FreeGlut (freeglut.sourceforge.net) finde ich eine .rar mit viel zu vielen Dateien (das der include Ordner in den include Ordner meines Compilers muss hab ich bereits herausgefunden, aber sonst scheint da noch bissl was zu fehlen (laut meines "Ersthelfers" können die Funktionen nicht richtig mit den Standard-DLLs die sich IRGENDWO befinden nicht richtig verlinkt werden).
Mein "Ersthelfer" hat bereits versucht, es selbst mit cygwin und gcc zu kompilieren. Das scheint auch soweit zu klappen. Leider findet der Linker einige Symbole nicht (unter anderem _imp_____glutInitWuth@12). Es wäre schön, wenn mir jemand jemand zu kompilierte binaries (.lib und .dll) verhelfen könnte.
Falls das relevant ist: Was ich vorhabe: OpenGL 3.1 verwenden, aber abwärtskompatibel auch die alten herausgenommenen Funktionen will ich verwenden können (mit FreeGlut). Ich benutze Windows 7 64bit, folgende Compiler: Windows Visual Studio 2008 oder 2009 und QT (MinGW).
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich bin weder C/C++ noch freeglut User. Aber vielleicht kommt ja noch was. Ein funktionierendes Beispiel aus anderer Quelle hast du nicht finden können?
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Naja, wenn ich es schon nicht auf der offiziellen Seite von OpenGL die Header kriegen kann, wie sollte ich die dann wo anders finden? Selbiges bei freeglut.
Versucht hatte ich es natürlich trotzdem, aber ohne Erfolg.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das würde mir als Entwickler sagen, dass ich keine Sekunde länger meine Zeit mit diesem Zeug verschwenden würde und mir ein anderes Funktionierendes Template suchen sollte.
glut macht ja nichts weiter als einem bei standardaufgaben zu helfen wie z.B. die Initialisierung. Wenn man aber ein funktionierendes Beispiel findet, ist das eh schon gemacht. Also vergiss freeglut und leg ohne dem Zeug los.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Ich würde ja SDL nehmen, aber ich will ja eigentlich das RedBook durcharbeiten. Da nutzen die Codebeispiele FreeGlut und das wäre dann denke ich mal... praktischer es hier zu nutzen.
Zudem ist ja nicht nur FreeGlut das Problem, sondern auch das ich einen aktuellen C-Header für OpenGL haben will, der alle Funktionen bis zur Version 3.1 unterstützt (also auch die die rausgenommen wurden, aber wegen kompatibilitätsgründen trotzdem meine Grafikkarte unterstützt).
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Soweit ich mich erinnere gibt es bei C/C++ keinen Header der alles beinhaltet. es gibt/gab den gl.h header und den glu.h header . Inwieweit die alles beinhalten kann ich dir nicht sagen. Aber die Header von OpenGL werden in C/C++ veröffentlicht. Das was du also von OpenGL.org bekommst ist das orginalste was geht.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Der Header gl3.h ist hierbei nicht das was ich suche. Dort steht:
[...] * gl3.h only includes interfaces supported in a OpenGL 3.1 (without * GL_ARB_compatibility) or OpenGL 3.2, 3.3, 4.0, or 4.1 core profile * implementation, as well as interfaces for newer ARB extensions which * can be supported by the core profile. It does not, and never will * include functionality removed from the core profile, such as * fixed-function vertex and fragment processing. * * Implementations of OpenGL 3.1 supporting the optional * GL_ARB_compatibility extension continue to provide that functionality, * as do implementations of the OpenGL 3.2+ compatibility profiles, and * source code requiring it should use the traditional <GL/gl.h> and * <GL/glext.h> headers instead of <GL3/gl3.h>. [...]
Womit ich nicht in der Lage sein sollte die alten Funktionen nutzen zu können. (glext.h ist auf der Seite aber einfach zu finden.) Such ich vllt einfach nur an der falschen Stelle?
Ich will keine Extensions nutzen, ich will die ehemaligen CORE-Funktionen nutzen können (nicht nur die JETZIGEN Core-Funktionen, auch die alten, die rausgenommen wurden (wie zum Beispiel: glVertex3f)).
Registriert: Mi Dez 03, 2008 12:01 Beiträge: 167 Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
Bei deinem Compiler sollten doch eigentlich passende Header dabei sein. VC++ bringt welche mit und MinGW auch. Die neuen Funktionen wirst du aber über glew nutzen müssen, da die OpenGL-Implementation von Windows noch bei 1.1 ist. Obwohl, seit Vista oder 7 ist die meines Wissens nach bei 1.5, aber immernoch weit hintendran.
_________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
Hallo ich melde mich mal wieder. Ich habe einige Zeit vorher es erstmal aufgegeben und will es nochmal versuchen.
Scheinbar finden sich die Funktionen in einem dem Compiler zugehörigen Header wieder (interessanterweise sind im gl3.h von opengl.org nichtmal die aktuellen "Core"-Funktionen).
Problem: Mir fehlen aber dennoch die passenden Libs.
Registriert: Di Sep 06, 2005 18:34 Beiträge: 362 Wohnort: Hamburg
Hi,
auch wenn sich das Problem evtl gelöst hat will ich nochmal was zu dem Header Gedöns sagen, was alles evtl etwas aufklären könnte:
Die von Windows mitgeliefert OpenGL Version steht bei 1.1 und daran kann niemand etwas ändern. Neuere OpenGL versionen werden durch Bibliotheken vom Grafiktreiber hinzugefügt, die von der opengl32.dll von Windows geladen werden. Um unter Windows auf die Core Funktionen neuerer OpenGL Versionen zugreifen zu können muss man diese allerdings manuell aus den dlls laden. Da hilft eine Extension Library wie GLEW weiter, da sie das für einen übernimmt (ob man nun Core Funktionen oder Extensions lädt, ist egal). Die glext.h sollte da auch helfen können, hab die selber aber nie benutzt. Ob es da evtl Compiler spezifische Lösungen für gibt weiß ich nicht.
Die gl3.h ist für diejenigen, die nur OpenGL 3.0+ Dinge nutzen wollen. D.h. da sind alle 3.0+ Core Funktionen und Tokens drin und sonst nix. Um das allerdings nutzen zu können (hab mich da auch sehr drüber gewundert), muss man allerdings GL3_PROTOTYPES definieren (am besten direkt am Compiler). Da nur so die Funktionen automatisch geladen werden, sonst werden nur die Funktion Pointer definiert und man muss sie selber aus der dll laden.
Hoffe das bringt nachträglich noch etwas Licht ins Dunkel
Gruß Shai
_________________ Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)
Also die Funktionen bis Version 1.3 gehen Problemlos (bis auf glArrayElement im DoubleBuffer-Modus... egal... ist nicht so wichtig).
Nun kann ich ja problemlos die Funktionsprototypen in den Header ergänzen, aber nicht in den Libs. Sprich: ich kann neuere Funktionen immernoch nicht nutzen.
Registriert: Di Sep 06, 2005 18:34 Beiträge: 362 Wohnort: Hamburg
Hey,
ich verweise dich mal auf den folgenden Abschnitt eines Artikels: http://www.opengl.org/wiki/Getting_star ... extensions Auch wenns da OpenGL 2.0+ heißt, es erklärt wie man unter Windows an die Core Funktionen kommt, was, wenn ich dich richtig verstehe, genau das ist was du willst.
Der Abschnitt kurz zusammen gefasst: alle Methoden über 1.1 (1.2+, 2.x, 3.x und 4.x) müssen zur Laufzeit aus den dlls geladen werden, manuell. In den Headern (glext.h etc.) findest du nur die entsprechenden Function Pointer.
Diese Arbeit kann dir z.B. GLEW abnehmen. Sorry, wenn ich dich so stur wieder darauf verweise, aber du wirst kaum drum herum kommen GLEW zu benutzen, es sei denn du willst dir Ellen lange include Files schreiben und hunderte Zeilen gleich aussehenden Code um blöde Funktionen zu laden, wenn das bereits andere vor dir getan haben.
GLEW lädt nicht nur Extensions, sondern ALLE (so jedenfalls der Plan) Funktionen die von OpenGL zur Verfügung gestellt werden können (auch wenn du 3.x benutzt werden die 1.x und 2.x Funktionen geladen). Inklusive aller Core Funktionen, die von deinen Treibern unterstützt werden (die sollten natürlich einigermaßen aktuell sein).
GLEW bringt zwar einiges an Overhead mit (es wird halt auch viel geladen, was du nie benutzen wirst), ist aber, erst recht am Anfang, unersetzlich. Um GLEW zu installieren lädtst du dir von http://glew.sourceforge.net/ die Binaries für dein System herunter (win64 wenn ich das richtig sehe) und entpackst die Dateien in deine Compiler Umgebung (libs zu libs, includes zu includes etc.) Dann fügst du beim Linken GLEW32 (oder so ähnlich) hinzu und "includierst" überall wo du GL benutzen willst <GL/glew.h> (nicht gl.h oder glu.h). Irgendwo am Anfang deines Programms musst du allerdings noch glewInit() aufrufen (bevor irgendwas mit GL gemacht wird) ... dies lädt dann alle Funktionen.
Ich bin mir nicht 100% sicher, ob ich dein Problem richtig erfasst habe (bin ziemlich übermüdet), aber wenn es sich mit GLEW lösen lässt, solltest du es wirklich mal versuchen ... sobald du es einmal zum Laufen bekommen hast, wirst du dich erstmal nicht mehr um irgendwelches Funktions Gedöns kümmern müssen.
_________________ Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.