Я пишу приложение, которое будет использовать сторонние созданные плагины для рендеринга всевозможных хитростей в 3D.
Мое главное приложение - создать объект context / render и объект rendertarget / framebufferobject. Сторонние плагины будут рендерить свои причудливые вещи, поэтому им необходим доступ к этому контексту / renderobject для выполнения вызовов, связанных с 3d-рендерингом.
Я могу решить реализовать это с помощью OpenGL или Direct3D.
Мое решение, скорее всего, будет основано на моем понимании следующей проблемы:
Очевидно, что будут выходить новые версии OpenGL / Direct3D, и было бы неплохо, если бы вновь созданные плагины могли получить выгоду от более новых версий DX / OGL, чем скомпилированная основная программа. (, если компьютер, на котором запущено приложение, поддерживает эту более новую версию )
Используя OpenGL (используя OpenTK), я понял, что можно создать совместимый с прямым переходом контекст, как в «Дайте мне самую последнюю версию, обратно совместимую с версией X» .
Поэтому при запросе контекста 3.2, если доступен 4.0, он вернет контекст 4.0.
Для DirectX я не вижу ничего подобного, что означало бы, что если я создам свою основную программу, например, с DirectX 11, сторонние плагины никогда не смогут использовать более новые версии, если они доступны?
Я правильно понял?
Позволит ли OpenGL сторонним разработчикам плагинов создавать плагины для более новых версий OpenGL, в то время как DirectX не позволит мне сделать что-то подобное?