Не обсуждая, что мы предпочитаем в качестве соглашений об именах, как это было бы не так c, я попытаюсь объяснить причины такого выбора дизайна.
Это число является версией структуры / функции в том порядке, в котором она появилась в API при добавлении новых функций, поэтому проще отслеживать версию API, которая поставляется вместе с функцией.
В идеальном мире их будет только одна функция / структура, так как эти функции XXXN являются лишь продолжением предыдущей, но это невозможно из-за постоянного развития технологий рендеринга.
Есть другие подходы, хотя, как вы можете видеть в Vulkan, с возможностью расширения, проверяемой во время выполнения с помощью перечисления VkStructureType
, и, хотя это отличный и понятный инструмент для расширений, у него есть свои недостатки, так как он более многословен и просчитан поздно во время выполнения. Вы можете заметить, что Vulkan использует тот же подход, когда функции не расширяемы, как, например, VkPhysicalDeviceProperties2
.