2013-04-18 32 views
2

我想用openGL在控制檯上做一個最小化的視覺顯示,但據我所知,必須有一個窗口系統(glut,glfw,sdl等等。 )。在linux控制檯中創建openGL上下文(Raspbian)

我見過omxplayer爲了節省一些處理能力,使電影可以觀看,在控制檯上創建一個圖形環境(我只是假設它是openGL或類似的東西,所以請糾正我,如果我錯了) PI。

我只是想知道他們是如何做到的?這個主題有一些文獻嗎?我主要對C/C++中的解決方案感興趣,但具有這些功能的任何語言都將非常瞭解!

我清理了源代碼,但無法真正找到關於此特定任務的線索。任何幫助或指針,將不勝感激!

回答

3

注意:樹莓皮做的OpenGL ES,而不是OpenGL的。

你可以找到的VideoCore SDK進行基於控制檯的OpenGL ES應用的例子:

/opt/vc/src/hello_pi

我不知道你所說的「窗口系統」的意思,尤其是當你提到SDL。您可以絕對在控制檯中使用SDL + OpenGL ES。這就是Quake3端口(和我創建的Quake2端口)使用的。

2

它使用EGL本地平臺接口。

下面是來自SubtitleRenderer類的一些代碼:

void SubtitleRenderer::initialize_vg() { 
    // get an EGL display connection 
    display_ = eglGetDisplay(EGL_DEFAULT_DISPLAY); 
    ENFORCE(display_); 

    // initialize the EGL display connection 
    ENFORCE(eglInitialize(display_, NULL, NULL)); 

    // get an appropriate EGL frame buffer configuration 
    static const EGLint attribute_list[] = { 
    EGL_RED_SIZE, 8, 
    EGL_GREEN_SIZE, 8, 
    EGL_BLUE_SIZE, 8, 
    EGL_ALPHA_SIZE, 8, 
    EGL_SURFACE_TYPE, EGL_WINDOW_BIT, 
    EGL_NONE 
    }; 
    EGLConfig config{}; 
    EGLint num_config{}; 

    ENFORCE(eglChooseConfig(display_, attribute_list, &config, 1, &num_config));