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