2017-02-17 67 views
2

如果我只想做一些使用OpenGL函数的渲染,甚至不创建窗口。我是否还需要使用像glx这样的库来将OpenGL与平台窗口系统绑定?将OpenGL渲染为离屏帧缓冲时,是否仍然需要窗口系统支持?

如果我不需要,那么在哪里创建OpenGL上下文?因为我需要使用像glXCreateContext这样的函数来创建OpenGL上下文。但是如果我没有记错,每个OpenGL程序都需要一个上下文。所以似乎有矛盾?

希望有人能为我澄清这一点。

+0

取决于[实施](http://stackoverflow.com/a/41272146/44729)。 – genpfault

回答

2

OpenGL本身(规范)不对窗口系统集成以及在何处以及如何获取渲染上下文施加任何要求。 OpenGL实现提供离屏上下文创建是完全合法的。实际的问题是:哪些OpenGL实现可以做到这一点,以及它的API是什么。

在带DRI/DRM/Mesa的Linux上,有一个窗口无屏幕OpenGL上下文可以使用支持KMS的GPU上的GBM API /库创建。此外,Mesa还有一个离屏Mesa变体(OSMesa),但目前只能进行基于软件的渲染(llvmpipe或softpipe),但它可能会在稍后添加GPU支持。 EGL(用于上下文管理的Khronos跨平台API)还提供了无窗口/无屏幕上下文创建选项,这些选项是可选的以被驱动程序支持。至少NVidia专有驱动程序支持它:https://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/

+0

您的解释对我有意义,谢谢! –

相关问题