Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wayland - obsługa pełnego OpenGL
#1
0
Witam, w związku z tym, że w nowych wersjach Ubuntu domyślnym serwerem wyświetlania jest Wayland trzeba się przygotować na to, że część aplikacji będzie trzeba przepisać pod Wayland. Niby jest coś takiego jak XWayland ale nie zawsze działa poprawnie ze wszystkimi programami. 

Domyślam się, że niedługo XFCE, MATE, Cinnamon będzie przepisany pod Wayland.

Chciałbym stworzyć aplikację kliencką OpenGL. Ale nie wiem jakie nagłówki załączyć, żeby skorzystać z funkcji OpenGL bez instalacji dodatkowych bibliotek.

Ewentualnie mogę skorzystać z OpenGL ES, też nie wiem jakich nagłówków oraz bibliotek użyć.

Przede wszystkim chodzi mi o to, żeby wszystko działało na sesji Wayland.

Tutaj są pokazane warstwy i używane protokoły do komunikacji z poszczególnymi warstwami:

[Obrazek: OW7Bghel.png]
[Obrazek: MV1Ws7sl.png]

Pełny OpenGL nie wymaga EGL (W takim razie jak on działa bez tworzenia okna?)

Moje pytania co dot. protokołu Wayland:

-Czy mogę łączyć przy pomocy EGL, OpenGL z systemem okien Wayland? (Czy Wayland obsługuje OpenGL?)
-Jakich nagłówków muszę użyć, żeby skorzystać z funkcji EGL oraz OpenGLES?
-Czy muszę instalować/kompilować jakieś biblioteki, żeby użyć funkcji OpenGLES oraz EGL?


Aktualizacja:

-Zmieniłem z "EGL - to jest kod kleju który pośredniczy między API takimi jak OpenGL, OpenGLES, OpenGLVG." na "EGL - to jest kod kleju pośredniczący między intefrejsami API takimi jak OpenGL, OpenGL ES, OpenGL VG a systemem okien."  (Wprowadzało to w błąd użytkowników forum, po prostu początkowo źle zrozumiałem koncepcję EGL, a prostuje.)

-Bardzo prosiłbym administrację o zmianę tytułu wątku na "Wayland - Pełny OpenGL"

Informacje:
OpenGL ES to podzbiór pełnego OpenGL dla urządzeń wbudowanych. "Embedded Systems"
EGL - to jest kod kleju pośredniczący między intefrejsami API takimi jak OpenGL, OpenGL ES, OpenGL VG a systemem okien.
W skrócie EGL łączy API OpenGL z systemem okien. Coś podobnego na wzór GLX (X window system) oraz WGL (Windows)

Przydatne linki:
https://unix.stackexchange.com/questions...-of-opengl
https://pl.wikipedia.org/wiki/OpenGL_ES
https://pl.wikipedia.org/wiki/EGL
https://pl.wikipedia.org/wiki/GLX
https://en.wikipedia.org/wiki/WGL_(API)
Odpowiedz
#2
0
Dobra, już to ogarniam. 

Kompozytor Weston jest referencyjną implementacją kompozytora Wayland. (Mówiąc prościej - przykładowa implementacja kompozytora, który wykorzystuje protokół Wayland do komunikacji Klient-Kompozytor)

Co to jest kompozytor:
https://pl.wikipedia.org/wiki/Mened%C5%BCer_kompozycji

Co to jest menedżer okien:
https://pl.wikipedia.org/wiki/Mened%C5%BCer_okien

Co to jest Open GLES:
W skrócie mówiąc podzbiór funkcji OpenGL.

Co to jest Direct Rendering Infrastructure - DRI (Po angielsku) :
https://en.wikipedia.org/wiki/Direct_Ren...astructure

Odpowiedź na moje pytanie brzmi tak:

Teoretycznie można stworzyć kompozytor, który będzie wykorzystywał protokół Wayland do komunikacji między klientami a kompozytorem oraz korzystał z API OpenGL, tylko że problem jest w tym, że biblioteki GL, która jest częścią sterownika MESA wymaga GLX do działania, więc to wyklucza możliwość stworzenia kompozytora opierającego się wyłącznie na protokole Wayland.

Więc miejmy nadzieję, że Freedesktop.org coś zrobi w tym kierunku, żeby rozwiązać tą zależność od GLX.

Jest coś takiego jak direct rendering (DRI), który umożliwia nieuprzywilejowanym programom w przestrzeni użytkownika wydawać polecenia sprzętowi graficznemu bez konfliktu z innymi programami. Głównym zastosowaniem DRI jest zapewnienie akceleracji sprzętowej implementacji OpenGL w Mesa. Direct Rendering używa się też do zapewnienia akceleracji OpenGL na konsoli bufora ramki bez działającego serwera wyświetlania. 

Ale, żeby wyświetlać na ekranie i tworzyć okna to wraz wymaga kompozytora Wayland czy X11.

Pomoc (Po angielsku) :
https://unix.stackexchange.com/questions...-of-opengl
Odpowiedz


Skocz do:




Użytkownicy przeglądający ten wątek: 1 gości