我正在使用xcb在X11下学习OpenGL,我很难搞清楚visuals和fbconfigs(你在glxinfo中找到的那些)之间的区别
就我所见,视觉是一组与深度缓冲,模板缓冲,帧缓冲等相关的属性.与fbconfigs有什么不同,为什么一个优于另一个?
解决方法:
在X Window系统中,Visual封装了Display的颜色映射(颜色类型,颜色深度).可以使用不同的Visuals配置相同的Display.
当OpenGL诞生时,在X System之后大约十年,结构XVisualInfo是在OGL部分创建的,而不是在X系统中创建的.这个新结构通过添加更多功能扩展了Visual类型,例如辅助缓冲区,双缓冲区和立体声.这个XVisualInfo用于创建gl-context.
1998年,GLX 1.3规范(在Khronos page找到它)增加了更多功能,特别是GLXPbuffer用于离屏渲染,但比GLXPixmap更容易.还添加了透明度,多次采样和样品缓冲液. GLXDrawable(Window或GLXPixmap,或者现在也是GLXWindow和GLXPbuffer)的配置与Visual能力差别太大,因此引入了GLXFBConfig.
出于向后兼容性原因,当前的GLX 1.4规范允许使用XVisualInfo,如果您不使用GLX> 1.2功能.但是创建上下文的首选方式是GLXFBConfig.
请注意,渲染到GLXPbuffer不使用X Visual.另请注意,使用Framebuffer objects,因为OGL 3.0使得GLXPbuffer的使用过时.