OpenGL + Mesa 3D + MinGW
Je programme en C++ d'applications (Ubuntu) de Linux et de les compiler pour 2 systèmes d'exploitation: en mode natif à Linux à l'aide de "g++" (compilateur C++ de GNU) et cross-compiler pour Windows à l'aide de "i386-mingw32-g++" (MinGW C++ cross-compilateur).
Maintenant, je suis en train de cross-compiler "OpenGL" applications (à partir de Linux à Windows) - pour cela, j'ai besoin de quelques fichiers de la bibliothèque OpenGL.
Comme une implémentation d'OpenGL, j'utilise la "Mesa 3D" bibliothèque open source. Heureusement, Ubuntu propose "précompilés" mesa3d bibliothèques (libgl1-mesa-dev et libglu1-mesa-dev) pour Linux, mais malheureusement, il n'y a pas toutes les bibliothèques précompilées pour l'utilisation avec MinGW cross-compilateur (donc Windows de versions) - donc je "DOIT" compiler manuellement "de source" (qui peut être téléchargé à partir de http://www.mesa3d.org page d'accueil).
Mais je n'ai aucune idée de le faire. Dans le mesa3d code source, il y a certains documents de la façon de construire les bibliothèques pour certains des plates-formes spécifiques - plus précisément, il est "README.MINGW32" fichier readme.
Mais juste sur les premières lignes il y a une commande
mingw32-make -f Makefile.mgw [OPTIONS...]
qui je ne peut pas s'exécuter parce que je n'ai pas de "mingw32-make" programme installé. Par d'autres logiciels, j'ai utilisé pour construire avec les "classiques"
./configure -> make -> make install
procédure, mais ce n'est pas de travailler sur mesa3d bibliothèques.
Par exemple, j'ai aussi essayé de
./configure --host=i386-mingw32
et il a été configuré ok, mais après avoir tapé
make
il a jeté une erreur
error: #error No PIPE_SUBSYSTEM_WINDOWS_xxx subsystem defined.
et maintenant je suis PERDU 🙁 .
Si quelqu'un sait comment créer le mesa3d bibliothèques pour les utiliser avec mingw32?
P. S.: Et bien sûr, je NE VEUX PAS à l'utilisation de Microsoft Visual Studio PLUS JAMAIS 🙂 . Et aussi, je tiens à faire toutes les choses nécessaires pour construire OpenGL environnement Linux et utilisant mingw32 pour la compilation croisée. J'espère que c'est possible.
P. S. 2: Sur http://www.mesa3d.org/systems.html page, il y est écrit que l'utilisation de MinGW avec Mesa 3D est "obsolète". Je suis sur la bonne façon de l'utiliser seulement de cette façon?
- Je me demandais... OpenGL est généralement utilisé pour accéder à l'accélération matérielle 3D. En utilisant mesa sur windows, vous avez recours à une mise en œuvre de logiciels sur windows. Est-ce vraiment ce que vous voulez ? Sinon, vous avez juste besoin d'utiliser le windows de bibliothèques opengl.
- Mon objectif principal est d'être "indépendant de l'architecture" lors de l'écriture de code c++- > donc je pensais que l'utilisation d'une croix-plate-forme de la bibliothèque ("mesa3d" dans ce cas) est un bon moyen pour y parvenir, je ne sais pas, peut-être que je me trompe. Dois-je donc comprendre pour en "chaque Windows" il y a des "bibliothèques" qui implémente OpenGL et quand j'écris quelques OpenGL code sur ma machine Linux, je n'ai pas besoin de distribuer tout OpenGL bibliothèques avec mon programme? Si oui, que les bibliothèques sont que - "opengl.dll", "libopengl.lib" ou quoi?
- OpenGL est habituellement exposées dans le cadre de la plate-forme. Pour Windows, Microsoft a été de l'expédition d'une interface de OpenGL (opengl.lib) dans sa plate-forme Sdk pour toujours. Je ne suis pas sûr exactement comment vous allez sur la construction .un pour mingw de l'éditeur de liens de ceux-ci, mais il est certainement différent de l'utilisation de mesa.
- Mesa lui-même est un logiciel de mise en œuvre. Sur GNU/Linux, à côté de la mise en œuvre de logiciels, il comprend également DRI (direct rendering interface) qui permet l'écriture de l'accélération matérielle des pilotes pour GL.
Vous devez vous connecter pour publier un commentaire.
Il n'est pas nécessaire de compiler Mesa3D pour MinGW. MinGW inclut la bibliothèque GL, c'est juste pas appelé
libGL.a
nilibGLU.a
; les bibliothèques sont plutôt appeléslibopengl32.a
etlibglu32.a
. Malheureusement, c'est ce que Microsoft a décidé de les appeler sous Windows sur Visual Studio, donc, à la fois Windows et GNU/Linux version de MinGW a décidé d'inclure les bibliothèques nommée comme ci-dessus.Ainsi, lors de la compilation croisée pour Windows, il suffit de changer:
en
Mesa3D sur GNU/Linux est en fait un nom pour un libre mise en œuvre de l'OpenGL. C'est parce que OpenGL est une marque de commerce, et de SGI politique de ne pas permettre à quiconque d'utiliser le nom sans avoir à payer une somme considérable d'argent. Malgré cela, SGI a fourni à l'auteur, Brian Paul, une copie de la suite de tests.
Mesa3D est sur la plupart des plates-formes indigènes de la mise en œuvre OpenGL connu comme un logiciel "sanity check" de la bibliothèque de l'émulation de nombreuses haut de gamme-matériel de fonctionnalités. Mais sur GNU/Linux, beaucoup plus important, c'est quelque chose qui s'appelle DRI ou le rendu direct de l'interface. C'est la vraie affaire, l'accélération matérielle et tous. Cette bibliothèque est également appelé Mesa3D; en fait, la mise en service pour DRI est une partie de Mesa3D ainsi que de X11 et le noyau.
Mesa3D fournit libre OpenGL compatible avec les en-têtes sur GNU/Linux et les autres plates-formes.
Résumé: Mesa3D est le nom de GNU/Linux la mise en œuvre de OpenGL depuis que le nom est une marque déposée. Cette bibliothèque comprend un excellent, plein de fonctionnalités, de corriger et relativement rapide, logiciel mise en œuvre. Il comprend également un affichage direct de l'interface pour l'accélération matérielle.
opengl32
etglu32
ont été toujours déjà là.