2017-02-17 99 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

您的解釋對我有意義,謝謝! –

相關問題