在linux控制台中创建openGL上下文(Raspbian)

时间:2013-04-18 10:35:27

标签: c graphics opengl-es console-application raspbian

我想用openGL在控制台中进行最小的视觉显示,但据我所知,必须有一个窗口系统(glut,glfw,sdl等等)。

我已经看到omxplayer从控制台构建一个图形环境(我只是假设它是openGL或类似的东西,所以请纠正我,如果我错了),以节省一些处理能力,并使PI中可观看的电影。

我只是想知道他们是怎么做到的?这个主题中有一些文献吗?我最感兴趣的是C / C ++中的解决方案,但任何具有这些功能的语言都会很有用!

我通过源代码搜索,但无法真正找到关于此特定任务的线索。任何帮助或指针将不胜感激!

2 个答案:

答案 0 :(得分:3)

注意:Raspberry Pi执行OpenGL ES,而不是OpenGL。

您可以在VideoCore SDK中找到基于控制台的OpenGL ES应用程序的示例:

/opt/vc/src/hello_pi

我不确定“窗口系统”是什么意思,特别是当你提到SDL时。您绝对可以在控制台中使用SDL + OpenGL ES。这就是Quake3端口(以及我制作的Quake2端口)所使用的。

答案 1 :(得分: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));