我注意到在 SlimDX.Direct3D9 命名空间中有很多具有两个不同版本的类和方法。一个版本有一个 Ex 后缀。我认为 DX9 API 也是如此。
例如:
SlimDX.Direct3D9.Device
SlimDX.Direct3D9.DeviceEx
SlimDX.Direct3D9.DisplayMode
SlimDX.Direct3D9.DisplayModeEx
DirectX9Ex 主要是对 DirectX9 的改进,只为 Windows Vista 和更高版本添加了新功能(最值得注意的是共享资源的能力)。
每个之间有一些不兼容,例如在创建资源时,您必须小心选择哪个池(Pool.Managed 与 Device 一起工作,但您需要 Pool.Default 与 DeviceEx )
如果您需要跨进程共享纹理,DeviceEx 是您唯一的选择,否则标准 Device 就可以了。
Ex -tended 是我一直在脑海中阅读它的方式(尽管它可能是错误的)。
C 没有重载,因此如果更新 API 以考虑最初未考虑的额外内容,例如新的选项字段,请输入FooEx
. (同样的推理也适用于新类型,即使重载不适用。)
虽然其他语言确实有重载,但包装器可能会保留Ex
约定以更好地反映底层源 API,包括对类型使用“注释”。
此命名约定在大部分 Win-C/Microsoft API中一直使用,但如果Foo2
是约定,则可能是。