OpenGL和D3D像素格式之间的差异

时间:2011-01-07 21:45:31

标签: opengl format pixel

我正在继续尝试为我的软件开发OpenGL路径。我正在使用抽象类和两者的具体实现,但显然我需要一个常见的像素格式枚举器,以便我可以描述纹理,backbuffer / frontbuffer和渲染两者之间的目标格式。我在每个具体实现中提供了一个函数,它接受我的抽象标识符R8G8B8A8,并为具体实现提供适用于D3D或OpenGL的枚举

我可以使用CheckDeviceFormat轻松枚举所有D3D像素格式。对于OpenGL,我首先迭代Win32可用的加速格式(使用DescribePixelFormat),然后查看PIXELFORMATDESCRIPTOR以查看它是如何组成的,所以我可以为它分配一个我的枚举。这是我的问题开始的地方:

我希望能够发现OpenGL在任何给定系统上支持的所有加速格式,与D3D格式相当。但根据格式描述符,没有任何RGB格式(它们都是BGR)。此外,使用上述方法不能枚举D3XT中可枚举的DXT1-5格式。对于后者,我想我可以假设如果扩展可用,它是硬件加速格式。

对于前者(如何根据RGB / BGR等解释格式描述符),我不太清楚它是如何工作的。

有人知道这些东西吗?

回应赞赏。

1 个答案:

答案 0 :(得分:0)

好的,我想我找到了我要找的东西:

OpenGL image formats

某些图像格式由规范定义(对于后备缓冲/深度模板,纹理,渲染目标等),因此在某种程度上可以保证这些格式可用(它们不需要)枚举)。像素格式描述符仍可用于计算给定窗口的可用前缓冲区格式。