Directx 为什么DX12使用像ID3D12XXX、ID3D12XXX1、ID3D12XXXN这样的错误命名?

Directx 为什么DX12使用像ID3D12XXX、ID3D12XXX1、ID3D12XXXN这样的错误命名?,directx,naming,Directx,Naming,我觉得这些命名惯例很糟糕,因为它们不能告诉你彼此之间的区别,让人们很难记住哪个是正确的 PS:相关页面在不讨论我们喜欢什么命名约定的情况下,我将尝试解释设计选择背后的原因 此数字是结构/函数的版本,它在添加新功能时在API中出现的顺序,因此更容易跟踪函数附带的API版本 在一个完美的世界中,它们只有一个函数/结构,因为这些XXXN函数只是前一个函数的扩展,但考虑到渲染技术的不断发展,这是不可能的 不过,正如您在Vulkan中看到的,还有其他方法,通过VkStructureTypeenum在运行时

我觉得这些命名惯例很糟糕,因为它们不能告诉你彼此之间的区别,让人们很难记住哪个是正确的


PS:相关页面

在不讨论我们喜欢什么命名约定的情况下,我将尝试解释设计选择背后的原因

此数字是结构/函数的版本,它在添加新功能时在API中出现的顺序,因此更容易跟踪函数附带的API版本

在一个完美的世界中,它们只有一个函数/结构,因为这些XXXN函数只是前一个函数的扩展,但考虑到渲染技术的不断发展,这是不可能的

不过,正如您在Vulkan中看到的,还有其他方法,通过
VkStructureType
enum在运行时检查扩展的可能性,尽管它是一个优秀且清晰的扩展工具,但它也有自己的缺点,因为它更为冗长,并且在运行时很晚才被发现。您可能会注意到,当函数不可扩展时,Vulkan采用的方法与例如
vkPhysicalDeviceProperties 2
相同