簡體   English   中英

GLX visual和FBconfig有什么區別?

[英]What's the difference between a GLX visual and a FBconfig?

我正在使用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頁 ),增加了更多的功能,特別是GLXPbuffer閉屏渲染,但較容易GLXPixmap 還添加了透明度,多次采樣和樣品緩沖液。 GLXDrawable (Window或GLXPixmap,或者現在也是GLXWindow和GLXPbuffer)的配置與Visual能力差別太大,因此引入了GLXFBConfig

出於向后兼容性原因,當前的GLX 1.4規范允許使用XVisualInfo ,如果您不使用GLX> 1.2功能。 但是創建上下文的首選方式是GLXFBConfig。

請注意,渲染到GLXPbuffer不使用X Visual。 另請注意,使用Framebuffer對象,因為OGL 3.0過時使用了GLXPbuffer。

視覺是X11本身的概念。 它描述了顏色編碼屬性。 一個特定的X11服務器我的晚餐有一組不同的視覺效果,而X11客戶端(圖形應用程序)可能會選擇一個最適合它的用例。 每個X11窗口都是針對一個視覺創建的。 有關詳細信息,請參閱有關X11可視類型的文檔

在具有glX擴展的X11服務器上,有一些這樣的視覺效果,通過OpenGL提供硬件加速渲染。 在創建要用於GL渲染的X11窗口之前,需要查詢合適的視覺效果。 在傳統的glX中,你可以使用例如glXChooseVisual來做到這一點。

另一方面, GLXFBConfig是一個僅與GLX本身相關的實體,經典的X服務器對它一無所知。 GLXFBconfigs可用於創建稱為P-Buffers的離屏渲染緩沖區(盡管如此,它現在已經過時了)。

可以將FBConfigs分為兩組:

  1. GLXFBConfigs,你可以使用它來創建一個X11窗口。 在這種情況下,FBConfig引用一些X11視覺ID,您可以使用glXGetVisualFromFBConfig來查詢。
  2. GLXFBConfigs,可單獨用於離屏渲染。 沒有關聯的可視ID,因此您無法使用這些ID來創建X11窗口。

FBConfigs通過提供更新,更靈活的接口glxChooseFBConfig ,所以最好是alwyas使用運行fbconfig API,即使你想關閉屏幕窗口。

典型的GL實現將為它支持的每種可視類型提供FBconfig,因此您應該在glxinfo輸出中找到兩次:作為實際視覺效果,以及或多或少相同的fbconfigs。 此外,它還將提供更多fbconfig格式,這些格式對於X11窗口來說是不典型的(例如超過32位色深)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM