3
EGL看起來像有史以來記錄最差的Khronos項目,我從字面上找不到任何關於這個項目的具體內容,但它看起來很有前途,最後還有一個GLUT/FreeGlut的標準化替代品。我的觀點是,假設我需要一個EGL上下文爲我的應用程序在Linux桌面上的窗口或沒有窗口(沒有裝飾),作爲我應該參考獲取該EGL上下文的程序員?例如,如果我使用QT,QT是否應該實現EGL? Xorg的?我?從程序員的角度來實現EGL是可能的嗎?
EGL看起來像有史以來記錄最差的Khronos項目,我從字面上找不到任何關於這個項目的具體內容,但它看起來很有前途,最後還有一個GLUT/FreeGlut的標準化替代品。我的觀點是,假設我需要一個EGL上下文爲我的應用程序在Linux桌面上的窗口或沒有窗口(沒有裝飾),作爲我應該參考獲取該EGL上下文的程序員?例如,如果我使用QT,QT是否應該實現EGL? Xorg的?我?從程序員的角度來實現EGL是可能的嗎?
Mesa的EGL實現似乎工作。
我已經與SDL 1.2用它在X11和Win32(至少直至幷包括梅薩10.4.7)得到的OpenGL ES 1.1和2.0上下文:
SDL_Surface* display = SDL_SetVideoMode(..., SDL_SWSURFACE);
SDL_SysWMinfo sysInfo;
SDL_VERSION(&sysInfo.version);
SDL_GetWMInfo(&sysInfo);
// use natDisplay with eglGetDisplay();
// use natWindow with eglCreateWindowSurface();
// X11
sysInfo.info.x11.lock_func();
NativeDisplayType natDisplay = sysInfo.info.x11.display;
NativeWindowType natWindow = sysInfo.info.x11.window;
// do EGL context init here
sysInfo.info.x11.unlock_func();
// Win32
NativeDisplayType natDisplay = GetDC(sysInfo.window);
NativeWindowType natWindow = sysInfo.window;
// do EGL context init here
眼下EGL主要與使用移動設備上的OpenGL ES,例如Android和iPhone。有些項目可以在桌面系統上使用OpenGL ES,我認爲即使是使用完整OpenGL和EGL的項目......您可能會發現這個問題有趣:http://stackoverflow.com/q/7017239/27130 –