2

我正在编写一个应用程序,它将使用第 3 方创建的插件来呈现各种 3D 技巧。

我的主要应用是创建上下文/渲染对象和渲染目标/帧缓冲区对象。3rd-party 插件将渲染他们花哨的东西,所以他们需要访问那个上下文/渲染对象来执行他们的 3d-render 相关的调用。

我可以选择使用 OpenGL 或 Direct3D 来实现它。我的决定很可能是基于我对下一个问题的理解:

显然,新版本的 OpenGL / Direct3D 将会问世,如果新创建的插件可以从比主程序编译的新版本的 DX/OGL 中受益,那就太好了。(如果运行该应用程序的计算机支持该较新版本

使用 OpenGL(使用 OpenTK)我知道可以创建一个向前兼容的上下文,如"Give me the most up-to-date-version that is back-compatible with version X"。因此,当询问 3.2 上下文时,如果 4.0 可用,它将返回 4.0 上下文。

对于 DirectX,我没有看到类似的东西,这意味着如果我使用 DirectX 11 创建我的主程序,第 3 方插件将永远无法使用可用的更新版本?

我得到这个正确吗?

OpenGL 是否允许 3rd-party 插件编写者为较新版本的 OpenGL 创建插件,而 DirectX 不允许我做类似的事情?

4

1 回答 1

1

如果 DirectX 曾经支持您在应用程序中谈论的那种兼容性,我会感到惊讶。Direct3D API 的每个版本基本上都是一个独立的 (COM) 对象层次结构,绝对不承认过去或将来可能存在其他代系统。(当然,平台级别的向后兼容性通常非常出色,但您追求的是完全不同的东西)。

因此,要么使用 OpenGL(您提到的支持至少听起来像是它提供了一些希望),或者甚至可以考虑为插件提供更高级别的 API,它在运行时以某种方式“编译”/“适应”到实际的目标平台。这会让你支持 OpenGLDirect3D(尽管很明显,尤其是着色器会带来严重的困难;因此像AnySL这样的项目)。

于 2011-01-12T00:06:35.193 回答