Salut à tous.
Dans pas (très) longtemps Wayland remplacera Xorg.
OpenGL fonctionne à l'intérieur de Xorg.
Je me demandes avec Wayland comment sa va se passer.
J'ai voulu chercher sur Google, mais je trouves rien de positif.
Qu'en pensez/savez-vous ?
Version imprimable
Salut à tous.
Dans pas (très) longtemps Wayland remplacera Xorg.
OpenGL fonctionne à l'intérieur de Xorg.
Je me demandes avec Wayland comment sa va se passer.
J'ai voulu chercher sur Google, mais je trouves rien de positif.
Qu'en pensez/savez-vous ?
Apparemment il faudra passer par EGL, plutôt que par GLX, par contre je ne sais pas quelles sont les fonctions spécifiques à cette API.
Merci.
Pour le moment, les seules possibilité que j'ai pu voir sont d'utiliser les toolkits qui le supporte (sdl,qt,gtk,..).
Via ces toolkits je pourrais ouvrir des contextes OpenGL.
Jusqu'à ce que je trouves une méthode plus directe, temporairement ça semble être le seul choix,
Bonjour,
Pour être au plus près de la machine, il faudra utiliser EGL, en effet. D'ailleurs, au final, cela reprends beaucoup des principes que l'on voyait dans GLX ou WGL.
Pour ouvrir un contexte, il faut spécifier les options qui nous intéressent et EGL nous trouvent la configuration la plus proche.
Toutefois, EGL apporte quelques petits trucs en plus : le partage de textures entre contextes en est un exemple.
Après, personnellement, je ne saisis pas trop la raison de ne pas utiliser SDL ou autre, mais c'est un choix.
Voici des infos utiles qui répond à tous les questions:
- documentation sur tout wayland: http://wayland.freedesktop.org/docs/html/
- support mesa: http://mesa3d.org/egl.html
- schéma fonctionnement wayland: http://upload.wikimedia.org/wikipedi...r_protocol.svg
En gros, sous wayland, on va utiliser egl pour lancer nos contexts opengl / opengl es.
Pour la non utilisation de sdl ou autres, ce dont j'ai besoin:
- gérer les entrées (clavier/souris)
- pouvoir afficher à l'écran mes codes opengl
Sdl et autres permettent, mais sont trop complet, je vais essayer d'être minimaliste à mes besoins.
Pour mon cas, si ça ne serait pas trop dure, je vais essayer de les gérer moi même.
Wayland:
(linux lib ->) Wayland lib -> entrées souris/clavier => wl_clavier, wl_souris..
(linux lib ->) Wayland -> Egl lib -> opengl/opengl es
Sdl:
(linux lib ->) Wayland lib -> entrées souris/clavier => wl_clavier, wl_souris.. -> sdl_clavier/souris..
(linux lib ->) Wayland -> Egl lib -> opengl/opengl es
Moi:
(linux lib ->) Wayland lib -> entrées souris/clavier
(linux lib ->) Wayland -> Egl lib -> opengl/opengl es
OU
linux lib -> entrées souris/clavier (<-- sa semble pas trop dure, je comptes essayer bientôt en pratique)
Wayland -> Egl lib -> opengl/opengl es (<-- pour cet partie, j'aimerais bien m'en passer de wayland/egl et directement afficher mes codes opengl, mais sa semble compliqué, mon manque de documentation et d'anglais, et ma precipitation me bloque à ce niveau (peut-être) temporairement (mais c'est déjà un bon début))
La partie EGL va seulement te permettre de créer un contexte, lui définir sa fenêtre d'affichage et éventuellement de lui spécifier des attributs.
Tout le reste (gestion VBO, textures, FBO et autres joyeuseries shaderiennes) se font en code OpenGL pur.
Ca fonctionne déjà comme ça en GLX, WGL ou CGL.
Mon réel but est de faire tout en opengl pur rien que sa.
Mais j'ai deux choix:
1- passer par wayland/egl, qui créer une fenêtre et je met mon opengl dedans
2- afficher (mes codes opengl pur) directement à l'écran (gérer tout l'écran), pas de fenêtrage.
Le deuxième cas, n'étant pas possible, d'après les forums publique, il me reste que le premier choix pour simuler mon deuxième choix, je dois lancer wayland/egl une fenêtre plein écran sans bordure.
Peut-être c'est compliqué ou passer par egl/x11 est obligatoire, je sais pas, je suis pas entré dans les détails, ne voulant pas regarder les codes sources à cause des licences, je sors les mains vide.
Et je me précipite pas trop sur ce sujet, car le contenu étant de l'opengl pur, le code fonctionnera sans risque d'incompatibilité, ce n'est qu'une question d'amorçage.
Alors j'ai pas compris ton problem.
OpenGL n'est qu'une API 3D qui fait ces calcul sur la carte graphique pour résumé sommairement , donc dans ma description on ne parle pas de fenêtrage ou rendu a écran ,donc ça me semble évident que tu devra te passer par une API ,sinon tu fera tes calcul 3D sans rendu possible (et donc très peu intérêt).
Comme dis plus haut il y a la SDL ou freeglut qui sont des API multiplateforme pour le fenêtrage alors il y a surement des subtilités mais grosso modo ces API ne font envoyé que le rendu opengl a écran , et donc je me pose la question qu'est qui peut te gêner sachant que tu fera la même chose quoi qu'il arrive.
Si tu cherche une API multiplateforme et qui ne change pas trop au fil des années freeglut fais le strict minimum.
Il faut aussi bien comprendre la construction d'une fenêtre à rendu rendu OpenGL.
C'est trois étapes (j'ai un léger doute sur l'ordre, mais de mémoire c'est le suivant) :
- création de la fenêtre avec l'API de fenêtrage (X11, WinAPI...) ;
- création d'un contexte avec GLX/WGL/EGL/AGL (je crois, pour Apple) ;
- rendu avec OpenGL ;
Vous pouvez faire de l'OpenGL pur, tout en laissant la création de la fenêtre et du contexte à une bibliothèque au niveau.
EGL, c'est la solution multiplateforme proposé par Khronos pour unifié GLX/WGL/AGL (pour faire quelque chose de portable).