模板缓冲区读/写掩码

时间:2010-02-17 15:26:25

标签: c# c++ 3d directx

在Direct3D10中,模板读/写掩码是一个字节(从0x00到0xFF)

在Direct3D9中,模板读/写掩码是一个int(从0x00000000到0xFFFFFFFF)

问题是:

Direct3D10中的模板读/写掩码如何与Direct3D9相关?

Direct3D10 | 0x00FFFFFF或Direct3D10 | 0xFFFFFF00?

另一个问题:

当模板缓冲区最大为8位时,为什么Direct3D9是32位整数? o.O

感谢。

1 个答案:

答案 0 :(得分:3)

Direct3D10 | 0xFFFFFF00

最低有效位是D3D9中的相关位,文档根据DWORD描述模板操作,但最终模板缓冲区仅存储单个字节,因此它只是掩码的最低有效字节。 / p>

D3D9使用DWORD的原因是该值是通过SetRenderState设置的,它带有两个参数,一个指定要更改的状态的D3DRENDERSTATETYPE枚举和一个DWORD值。因此,无论最终如何使用它们,所有渲染状态都必须使用DWORD值。在某些情况下,这意味着对浮点数进行reinterpret_cast。对于模板掩码,它意味着传递一个32位值,其中只需要最低8位。 D3D10通过类型结构设置状态,因此避免了这个问题。