【发布时间】:2015-04-12 13:23:53
【问题描述】:
我见过许多主要支持 OpenGL 的图形应用程序。我还注意到其中许多应用程序都有一个-d3d 标志,这将强制它们使用 DirectX API。
一个图形应用程序如何准确地使用两个不同的 API 却呈现完全相同的结果?他们肯定需要为这两个 API 添加代码,这既费时又有点浪费?
【问题讨论】:
-
“计算机科学中的每个问题都可以通过另一个抽象层来解决。”我怀疑这适用于此。
-
处理渲染 API 的实际代码通常只是整个应用程序的一小部分。拥有不同的渲染后端并不难。通常你有一些部分管理你的图形对象和“场景”(这当然很大程度上取决于应用程序的类型)。以前,游戏甚至有自己的软件光栅化器,后来可选地支持不同的 3D 加速 API。如今,许多游戏和图形应用程序使用常见的 3D 引擎,这些引擎支持不同的渲染 API,主要是为了支持不同的平台。
-
@JonathonReinhart 我想会使用类似包装器的东西,它只调用正确的函数?
-
@JonathonReinhart "计算机科学中的每一个问题都可以通过另一个间接层级来解决" + "除了间接层级太多的问题" ;)
-
@Mhmk 这是正确的。您可以轻松下载任何免费跨平台渲染引擎的源代码并亲自查看。
标签: opengl graphics directx rendering