如果我想做的就是使用OpenGL函数进行渲染,甚至不用创建窗口。我还需要使用像glx这样的库来将OpenGL与平台窗口系统绑定吗?
如果我不需要,那么OpenGL上下文在哪里创建?因为我需要使用像glXCreateContext这样的函数来创建OpenGL上下文。但如果我没记错,每个OpenGL程序都需要一个上下文。所以似乎存在矛盾?
希望有人能为我澄清这一点。
答案 0 :(得分:2)
OpenGL本身(规范)不对窗口系统集成以及在何处以及如何获取渲染上下文施加任何要求。 OpenGL实现提供屏幕外上下文创建是完全合法的。实际问题是:哪些OpenGL实现了这个以及它的API是什么。
在具有DRI / DRM / Mesa的Linux上,可以使用支持KMS的GPU上的GBM API /库创建窗口和无屏幕OpenGL上下文。
Mesa还有一个Off-Screen-Mesa变体(OSMesa),但目前只进行基于软件的渲染(llvmpipe或softpipe),但它可能会在以后添加GPU支持。
EGL(用于上下文管理的Khronos跨平台API)还提供无窗口/无屏幕上下文创建选项,这些选项可由驱动程序支持。至少NVidia专有驱动程序支持它:https://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/