在Direct3D10中,模板读/写掩码是一个字节(从0x00到0xFF)
在Direct3D9中,模板读/写掩码是一个整数(从0x00000000到0xFFFFFFFF)
问题是:
Direct3D10中的模板读写掩码与Direct3D9中的模板读写掩码有什么关系?
Direct3D10 | 0x00FFFFFF或Direct3D10 |0xFFFFFFF00?
还有另一个问题:
当模板缓冲区最大可以是8位时,为什么Direct3D9是32位整数?o.O
谢谢。
发布于 2010-02-18 05:14:36
Direct3D10 | 0xFFFFFF00
最低有效位是D3D9中的相关位,文档根据DWORD描述模板操作,但最终模板缓冲区只存储单个字节,因此它只是掩码的最低有效字节是重要的。
D3D9使用DWORD值的原因是,该值是通过SetRenderState设置的,它有两个参数,一个是指定要更改的状态的D3DRENDERSTATETYPE枚举,另一个是DWORD值。因此,所有渲染状态都必须使用DWORD值,无论它们最终是如何使用的。在某些情况下,这意味着对浮点数执行reinterpret_cast。对于模板掩码,这意味着传递一个32位的值,其中只需要最低有效的8位。D3D10通过类型化结构设置状态,因此避免了这个问题。
https://stackoverflow.com/questions/2281899
复制相似问题