【问题标题】:Difference between OpenGL and D3D pixel formatsOpenGL 和 D3D 像素格式之间的区别
【发布时间】:2011-01-09 21:00:24
【问题描述】:

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

我可以使用 CheckDeviceFormat 轻松枚举所有 D3D 像素格式。对于 OpenGL,我首先遍历 Win32 可用的加速格式(使用 DescribePixelFormat),然后查看 PIXELFORMATDESCRIPTOR 以了解它是如何组成的,因此我可以将其分配给我的枚举之一。这就是我的问题开始的地方:

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

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

有人知道这件事吗?

感谢回复。

【问题讨论】:

  • 明确地说,当我说所有格式似乎都是 BGR 时,我的意思是返回的描述符中的 cBlueShift == 0 && cGreenShift == 8 && cRedShift == 16。

标签: opengl format pixel


【解决方案1】:

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

OpenGL image formats

一些图像格式是由规范定义的(用于 backbuffer/depth-stencil、纹理、render-targets 等),因此在一定程度上可以保证这些格式是可用的(它们不需要枚举)。像素格式描述符仍可用于计算给定窗口可用的前端缓冲区格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 2020-11-13
    • 2021-09-05
    • 1970-01-01
    • 2012-08-20
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多