Wozu dienen die OpenGL-Dateien in wxWidgets? (Und wie ist OpenGL überhaupt aufgebaut?)
-
Hallo,
Ich bin ja gerade dabei, mir eine Übersicht über wxWidgets zu verschaffen. Letztlich hätte ich auch gerne ein 3D-Fenster/-Bereich. Also wollte ich mir die mitgelieferten opengl-Beispiele ansehen (in CodeBlocks unter Win)..Irgendwann habe ich dann auch herausgefunden, dass man opengl32.a und glu32.a einbinden muss...
Die erste, allgemeine, grundlegende Frage: Ist das selbsverständlich, oder woher sollte ich das wissen?Und nun die eigentlichen Fragen:
Wozu liefert mir wxWidgets eine wx-opengl-dll und eine wx-opengl-lib mit?
Bzw. was steht da drin? Oder wie verhält es sich zu den unten aufgelisteten opengl-Libs?Außerdem habe ich mir alles, was ich zu OpenGL finden konnte runtergeladen.
Hat es seine Richtigkeit, dass da (offizielle) Dateien von 2000/2001 dabei sind? Bzw. warum sind die so alt?Warum gibt es keine eigentliche "OpenGL"-Lib? Bzw. wie stehen denn GLFW, GLee, Glut, FreeGlut, Glew im Verhältnis zu OpenGL ???
Also ich kann nur raten, dass das Libs sind, die OpenGL (was auch immer das dann ist (Ist es vielleicht ein Hardware-Standard? - Kam mir gerade in den Sinn) ) implementieren. Falls dem so ist, welche ist dann die beste und welche passt zu wxWidgets? Bzw. kann ich auch eine andere nehmen, als die von wxWidgets für wxWidgets vorgesehene?Man kann ja auch in anderen Toolkits OpenGL nutzen, zB. in FLTK, gtkmm, SDL,...
Wenn ich jetzt nur mit solchen Toolkits arbeite, brauche ich dann überhaut die oben genannten Libs (GLFW, Glee, Glut,...)? Oder sind die lediglich dazu da, direkt (zB. WinAPI) OpenGL nutzen zu können?Und woher soll ich überhaupt wissen, welche Implementierung wxWidgets haben möchte (oder eines der anderen Toolkits)?
Und zum Schluss, warum ist OpenGl (in Form von Glut??) schon bei MinGW dabei, wenn es doch mehrere Libs gibt?
So relativ viel OpenGL und relativ wenig wxWidgets, aber naja.
MfG,
Klon457
-
Puh, also das sind sehr grundlegende Fragen, die man besser in einem Tutorial abarbeitet eigentlich. Aber ich versuche mal darauf einzugehen.
Es gibt keine "offizielle" OpenGL SDK, weil OpenGL keine SDK ist, sondern eine Spezifikation. Das Betriebssystem muss dafür die grundlegenden Fähigkeiten bereitstellen. Das tut Microsoft aber nur bis OpenGL 1.1 aus offensichtlichen Gründen. Die erweiterte Funktionalität, wie OpenGL 3 oder 4 liefern die Grafikkartentreiber. Diese ersetzen die OpenGL32.dll mit ihren Versionen.
Deswegen muss man auch immer testen, ob eine Funktion in der OpenGLL.dll vorhanden ist, da ein Anbieter die einfach nicht implementieren kann. Das nehmen Libraries wie z.Bsp. GLew dir ab. Diese gehen einfach beim start deiner Anwendung wenn du glewInit() aufrufst alle Funktionen durch und testen welche vorhanden sind, indem sie einen Zeiger auf die Funktion anfordern.In der wx-opengl-lib befindet sich der Code der nötig ist um einen OpenGL Context zu erzeugen und die Einbindung in wxWidgets.
Gegen die OpenGL32.lib und glu32.lib must du linken, weil sich darin vitale Funktionen befinden die Windows bereitstellt um besagten Context zu erzeugen.Nun hast du von FLTK und SDL gesprochen. SDL und SFML, sowie auch GLUT sind etwas grundlegend anderes als wxWidgets. wxWidgets ist primär dafür da um Anwendungen zu schreiben, wie als Beispiel CAD Programme. Der Editor der Unreal Engine lief lange Zeit mit wxWidgets als Beispiel, wurde aber am Ende von WPF abgelöst, wenn ich da richtig informiert bin. SDL und SFML sind dazu da um Spiele zu schreiben, deren API's sind grunldegend anders aufgebaut.
Man KANN mit wxWidgets Spiele schreiben, aber ich empfehle es nicht. Ich habe mal einen ShaderEditor damit programmiert, da war das ganz gut, aber für Spiele taugt es nicht, weil wxWidgets einfach nicht dafür gemacht ist.
GLUT wird mitgeliefert, weil GLUT eine schnelle Möglichkeit bietet einen Context zu erzeugen und loszulegen. Ich persönlich würde für Spiele aber SDL oder SFML immer GLUT vorziehen, weil das einfach eine hoffnungslos veraltete API ist.
Hoffe das war einigermaßen verständlich.
-
Hallo,
Auch hier noch ein verspätetes Dankeschön an dich!
Ich denke ich habs verstanden.
Die GUI-Lib-Bauer haben also die Wahl, ob sie alles selbst inplementieren, oder auf einer dritten Lib aufbauen. Und bei wxWidgets ist das ausnahmsweise so. Stimmt das soweit?!..Ach ja, der gute alte Unreal-Editor. Damit habe ich seinerzeit scon Maps für UT1 gebastelt...