我正在使用 xcb 在 X11 下学习 OpenGL,我很难弄清楚视觉效果和 fbconfigs(您在 glxinfo
中找到的)之间的区别
据我所知,视觉是一组与深度缓冲区、模板缓冲区、帧缓冲区等相关的属性。与 fbconfigs 有什么区别,为什么一个比另一个更可取?
最佳答案
在 X Window System 中,Visual 封装了 Display 的颜色映射(颜色类型、颜色深度)。同一个显示器可以配置不同的视觉效果。
当 OpenGL 诞生时,大约在 X System 之后十年,在 OGL 部分创建了一个结构 XVisualInfo
,而不是在 X System 中。这种新结构通过添加更多功能(例如辅助缓冲区、双缓冲区和立体声)扩展了 Visual
类型。此 XVisualInfo
用于创建 gl-context。
1998 年的 GLX 1.3 规范(可在 Khronos page 找到)添加了更多功能,特别是用于离屏渲染的 GLXPbuffer
,但比 GLXPixmap
更容易。还添加了透明度、多重采样和样本缓冲区。 GLXDrawable
(Window 或 GLXPixmap,或者现在还有 GLXWindow 和 GLXPbuffer)的配置与 Visual 功能相去甚远,因此引入了 GLXFBConfig
。
当前的 GLX 1.4 规范允许,出于向后兼容的原因,如果您不使用 GLX>1.2 功能,则可以使用 XVisualInfo
。但创建上下文的首选方法是使用 GLXFBConfig。
请注意,渲染到 GLXP 缓冲区不使用 X Visual。还要注意使用 Framebuffer objects因为 OGL 3.0 不再使用 GLXPbuffer。
关于linux - GLX 视觉和 FBconfig 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51558473/