首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DirectX与OpenGL游戏开发

DirectX与OpenGL游戏开发
EN

Stack Overflow用户
提问于 2011-08-26 05:20:10
回答 5查看 5K关注 0票数 3

我有几个关于在制作专业游戏时使用的图形平台的问题(如WoW,starcraft2,Diablo3.等)。

首先,如果在OpenGL中呈现,而不是在Direct X中呈现,WoW看起来会不会不同?如果用OpenGL呈现,性能会有很大的不同吗?

其次,创建游戏时的主要过程是什么,特别是在视频游戏中使用在Maya或3DS Max中创建的模型时?是否创建模型,然后将模型导出为可读的OpenGL/DirectX代码,并导出所有着色器程序,以及在代码中创建的所有顶点和三角形,最后在C++/c程序中利用代码?

OVerall,我很好奇视频游戏设计师/程序员如何将实际的3DS MAX/Maya模型导出到他们的代码中

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-26 05:34:05

首先,如果在OpenGL中呈现,而不是在

X中呈现,WoW看起来会不会不同?

它是在OpenGL中呈现的(当然,它可以使用一个设置)。不,它在D3D渲染中看起来并没有什么不同。(注意: DirectX不仅仅是Direct3D。)

如果在OpenGL中呈现,

的性能会有很大的不同吗?

不太可能。有一些事情OpenGL实现可以做得更快,但是WoW并没有使用它们。

会创建模型,然后将模型导出为可读的OpenGL/DirectX代码

OpenGL和Direct3D都没有模型格式。在这一点上,即使是.x文件也被弃用了;这些文件是D3DX库的一部分,该库只是微软在D3D之上编写的一个层。

其次,您不能将它们导出为“代码”。将它们导出到文件中,然后在游戏中读取这些文件。通常,您会将这些文件处理为更易于理解的游戏格式,因为导出器倾向于以不同的方式优化网格,而不是您希望在游戏中使用的网格。

因此这是导出到文件->过程到游戏中读取的最终文件->。

票数 5
EN

Stack Overflow用户

发布于 2011-08-26 06:46:36

首先,如果在OpenGL中呈现,而不是在

X中呈现,WoW看起来会不会不同?如果用OpenGL呈现,性能会有很大的不同吗?

OpenGL和Direct3D遵循相似的原理:顶点流进入,进行变换(固定函数或通过顶点着色器),变换后顶点被分组为基元(点、线、三角形),并且基元光栅化,即,对于每个像素,基元覆盖一些计算(同样是固定函数或通过自由编程的片段着色器),以确定所谓的“片段”颜色。最后,它测试了片段的可见性,并将其混合到正在绘制的图片中。

更高版本的OpenGL和DirectX添加了几何体和镶嵌细分阶段,但这些只是细节。

在所有其他方面,它们的工作方式都是如此相似,以至于渲染结果之间几乎没有区别,除了不同的剪辑空间映射在顶点位置上引入的舍入误差。

其次,创建游戏时的主要过程是什么,特别是在视频游戏中使用在

或3DS Max中创建的模型时?是否创建模型,然后将模型导出为可读的OpenGL/DirectX代码,并导出所有着色器程序,以及在代码中创建的所有顶点和三角形,最后在C++/c程序中利用代码?

不是的!模型及其辅助数据与代码分开存储。虽然在代码中存储几何图形肯定是可能的,但这是一个相当糟糕的想法,不应该这样做。我解释了模型如何加载到How to Import models from 3D software, like Maya into OpenGL?中的基本思想。

OVerall,我很好奇视频游戏设计师/程序员如何将实际的3DS MAX/Maya模型导出到他们的代码中

他们没有。他们将他们的模型导出为文件格式,为3D引擎的有效加载进行了优化,然后引擎从文件中加载模型和辅助数据。这不是什么黑魔法。整个过程与从文件中加载图像并将其显示或向扬声器播放一些音乐没有太大区别。要为3D模型设置动画,该模型将包含其他控制信息(骨架、骨骼等)。这允许基于相当少量的参数(手臂旋转、观察方向等)使其变形。然后这些参数是不同的。

票数 3
EN

Stack Overflow用户

发布于 2011-08-26 05:25:56

你提出了一个很大的问题,但至少对于它的“第二”部分来说--正如你所描述的,非平凡的模型是在软件包中创建的,但它们通常被导出到基本上代表几何列表的数据文件中。然后,这些文件被游戏的资源加载器读取,并放入顶点数组或缓冲区对象等中。这样,数据独立于代码。

硬编码的几何图形通常用于小的、固定的东西,以及教程项目。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7197334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档