linux - GLX 视觉和 FBconfig 之间有什么区别?

标签 linux opengl x11

我正在使用 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/

相关文章:

php - NGINX: connect() to unix:/var/run/php7.0-fpm.sock 失败(2:没有这样的文件或目录)

linux - 如何使 bash 命令回显线变为绿色

linux - 详细收听文件更改

linux - 如何使用 JNA 在 Linux (X11 lib) 上 Hook 鼠标?

c++ - xlib XNextEvent 检查一个键是否被按下

linux - 从 shell 运行 fortran 代码不起作用

c++ - 如何正确链接并构建动态链接库?

c++ - 游戏引擎与物理引擎与几何建模内核之间的区别

c++ - OpenGL 从深度缓冲区计算法线和 TBN 矩阵(SSAO 实现)

c++ - 来自 QT QWidget 的 X11 小部件