OpenGL + Mesa 3D + MinGW
Ich programmiere C++ - Anwendungen auf (Ubuntu) Linux und kompilieren Sie Sie, um 2 Betriebssysteme: nativ zu Linux mit "g++" (GNU C++ compiler) und cross-kompilieren Sie Sie zu Windows mit "i386-mingw32-g++" (MinGW C++ - cross-compiler).
Nun, ich bin versucht, um cross-kompilieren "OpenGL" - Anwendungen (Linux, Windows) - dafür brauche ich einige OpenGL-Bibliothek-Dateien.
Als eine Implementierung von OpenGL, die ich verwenden "Mesa 3D" open-source-Bibliothek. Zum Glück, Ubuntu bietet "vorkompilierte" mesa3d Bibliotheken (libgl1-mesa-dev und libglu1-mesa-dev) für Linux, aber leider gibt es keine vorkompilierte Bibliotheken für die Verwendung mit MinGW-cross-compiler (also Windows-Versionen davon) - also ich "MUSS" von Hand compilieren "von der Quelle" (Download von http://www.mesa3d.org homepage).
Aber ich habe keine Idee, das zu tun. In der mesa3d-source-code, gibt es einige Dokumente, wie man die Bibliotheken für bestimmte Plattformen - speziell dort ist die "README-Datei.MINGW32" readme-Datei.
Aber nur auf den ersten Zeilen gibt es irgendein Befehl
mingw32-make -f Makefile.mgw [OPTIONS...]
die kann ich nicht ausführen, weil ich habe keine "mingw32-make" - Programm installiert. Durch eine andere Software, die ich verwendet, um zu bauen Sie mit der "klassischen"
./configure -> make -> make install
Verfahren, aber dies ist nicht arbeiten auf mesa3d Bibliotheken.
Zum Beispiel habe ich auch versucht
./configure --host=i386-mingw32
ist und dafür konfiguriert ist, ok, aber nach der Eingabe
make
er warf einige Fehler
error: #error No PIPE_SUBSYSTEM_WINDOWS_xxx subsystem defined.
und nun bin ich VERLOREN 🙁 .
Also weiß jemand, wie man die mesa3d-Bibliotheken für die Verwendung mit mingw32?
P. S.: Und natürlich ich WILL NICHT Microsoft Visual Studio NIE MEHR 🙂 . Und auch ich möchte alles tun, die erforderlichen Dinge zu bauen OpenGL-Umgebung von Linux und mit mingw32 cross-kompilieren. Ich hoffe, es ist möglich.
P. S. 2: Auf http://www.mesa3d.org/systems.html Seite dort steht geschrieben, dass unter Verwendung von MinGW mit Mesa 3D ist "deprecated". Ich bin auf dem richtigen Weg, um es einfach so?
- Einfach Fragen... OpenGL ist in der Regel verwendet, um Zugriff auf hardware-beschleunigte 3D. Durch die Verwendung von mesa auf windows, Sie greifen auf eine software-Implementierung auf windows. Ist das wirklich das, was Sie wollen ? Ansonsten müssen Sie nur verwenden Sie den in windows bereitgestellten opengl-Bibliotheken.
- Mein primäres Ziel ist "systemunabhängig" beim schreiben von c++ - code -> daher dachte ich, dass mit einem cross-Plattform-Bibliothek ("mesa3d" in diesem Fall) ist ein guter Weg, das zu erreichen, ich weiß nicht, vielleicht bin ich falsch. Also sollte ich verstehe es so, dass in "jeder Windows" gibt es einige "Bibliotheken", die OpenGL-und wenn ich Schreibe einige OpenGL-code auf meinem Linux-Rechner, ich brauche nicht zu verbreiten, ohne zusätzliche OpenGL-Bibliotheken mit meinem Programm? Wenn ja, welche Bibliotheken sind, dass - "opengl.dll", "libopengl.lib" oder was?
- OpenGL ist in der Regel ausgesetzt, die als Teil der Plattform. Für Windows hat Microsoft Versand wurde eine OpenGL-Schnittstelle (opengl.lib) in seine Plattform-SDKs für immer. Ich bin mir nicht ganz sicher wie Sie gehen über den Bau .a für mingw linker aus diesen, aber es ist definitiv anders als mit mesa.
- Mesa selbst ist eine software-Implementierung. Auf GNU/Linux, neben der Implementierung der software, es beinhaltet auch DRI (direct rendering interface) ermöglicht das schreiben von hardware-beschleunigte Treiber für GL.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Notwendigkeit zu kompilieren Mesa3D für MinGW. MinGW enthält die GL-Bibliothek; es ist nur nicht genannt
libGL.a
nochlibGLU.a
; die Bibliotheken sind stattdessen rieflibopengl32.a
undlibglu32.a
. Leider ist das, was Microsoft beschlossen, rufen Sie unter Windows auf Visual Studio, so dass Windows-und GNU/Linux-Version von MinGW entschieden, den Bibliotheken benannt wie oben.So, beim cross-kompilieren für Windows, ändern Sie einfach:
in
Mesa3D auf GNU/Linux ist eigentlich ein name für ein libre Implementierung von OpenGL. Dies ist, weil OpenGL ist ein Warenzeichen, und SGI die Politik nicht zulassen, dass irgendjemand den Namen, ohne zu bezahlen eine saftige Summe Geld. Trotz dieser, SGI, sofern der Autor, Brian Paul, eine Kopie der Test-suite.
Mesa3D ist auf den meisten Plattformen mit nativen OpenGL-Implementierung bekannt als ein software - "sanity-check" - Bibliothek mit emulation von zahlreichen high-end-hardware-features. Aber auf GNU/Linux, viel wichtiger ist die so genannte DRI oder direct-rendering-interface. Dies ist der real deal, die hardware-Beschleunigung und alle. Diese Bibliothek wird auch als Mesa3D; in der Tat, die Bereitstellung für DRI ist ein Teil von Mesa3D sowie von X11 und kernel.
Mesa3D bietet libre OpenGL-kompatible Header, die auf GNU/Linux und andere freie Plattformen.
Zusammenfassung: Mesa3D ist die Bezeichnung für die GNU/Linux-Implementierung von OpenGL, seit dieser name ist geschützt. Diese Bibliothek enthält eine hervorragende, ausgereifter, korrekt und relativ schnelle software-Einführung. Es enthält auch direct-rendering-interface für hardware-Beschleunigung.
opengl32
undglu32
waren immer schon da.