2013-04-18 34 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));