在Direct3D10中,模板读/写掩码是一个字节(从0x00到0xFF)
在Direct3D9中,模板读/写掩码是一个int(从0x00000000到0xFFFFFFFF)
问题是:
Direct3D10中的模板读/写掩码如何与Direct3D9相关?
Direct3D10 | 0x00FFFFFF或Direct3D10 | 0xFFFFFF00?
另一个问题:
当模板缓冲区最大为8位时,为什么Direct3D9是32位整数? o.O
感谢。
答案 0 :(得分:3)
Direct3D10 | 0xFFFFFF00
最低有效位是D3D9中的相关位,文档根据DWORD描述模板操作,但最终模板缓冲区仅存储单个字节,因此它只是掩码的最低有效字节。 / p>
D3D9使用DWORD的原因是该值是通过SetRenderState设置的,它带有两个参数,一个指定要更改的状态的D3DRENDERSTATETYPE枚举和一个DWORD值。因此,无论最终如何使用它们,所有渲染状态都必须使用DWORD值。在某些情况下,这意味着对浮点数进行reinterpret_cast。对于模板掩码,它意味着传递一个32位值,其中只需要最低8位。 D3D10通过类型结构设置状态,因此避免了这个问题。