我正在繼續嘗試爲我的軟件開發OpenGL路徑。我使用具體實現的抽象類,但顯然我需要一個通用的像素格式枚舉器,以便我可以描述紋理,backbuffer/frontbuffer和呈現兩者之間的目標格式。我在每個具體的實現中都提供了一個函數,它接受我的抽象標識符R8G8B8A8,並提供了一個適用於D3D或OpenGL的枚舉。具體實現我可以使用CheckDeviceFormat輕鬆枚舉所有D3D像素格式。對於OpenGL,我首先通過Win32可用的加速格式(使用DescribePixelFormat)進行迭代,然後查看PIXELFORMATDESCRIPTOR以查看它是如何組成的,因此我可以爲其分配一個枚舉。這是我的問題開始:OpenGL和D3D像素格式之間的區別
我希望能夠發現所有加速格式的OpenGL任何給定系統上的支持,爲相當於一個D3D格式。但根據格式描述符,沒有任何RGB格式(它們都是BGR)。此外,像D3D中枚舉的DXT1 - 5格式的東西不能用上面的方法枚舉。對於後者,我想我可以假設擴展是否可用,這是一種硬件加速格式。對於前者(如何根據RGB/BGR等解釋格式描述符),我不太確定它是如何工作的。
任何人都知道這個東西?
迴應讚賞。
要清楚,當我說所有的格式似乎是BGR,我的意思是,在返回的描述符cBlueShift == 0 && cGreenShift == 8 && cRedShift == 16。 – Robinson 2011-01-07 21:52:52