3D引擎对我有什么作用?

时间:2010-10-18 03:10:41

标签: android graphics opengl-es 3d

我有兴趣开发一个Android应用程序,它将显示某种像Google Earth这样的地球。

我从未使用过opengl或者有图形编程的经验,所以我在这里学习一些基础知识。现在,我知道有一些像Unity或Ogre这样的东西可以帮助促进图形,但是我使用这些引擎获得了什么,而不是仅仅使用opengl api渲染图形?为什么你使用像Ogre这样的引擎而不是直接使用opengl?

2 个答案:

答案 0 :(得分:3)

创建图形应用程序远不仅仅是3D库。

OpenGL等库可以映射图形硬件的硬件特定功能(以及模拟软件中不支持的功能),但这只是一个开始。

首先,您需要管理对象。您需要找到一种方法将它们从您的3D软件(Maya,Max,Blender)转换为您希望将它们存储在应用程序中的任何数据格式,并且您需要使用控制结构以某种方式将它们存储在您的应用程序中。

你需要对它们进行转换,为它们制作动画,对它们进行修饰。您需要一个场景管理来轻松剔除视锥体外的对象。你需要一个相机并移动它。

您需要处理照明,光源。你需要处理渲染过程,如光通过,阴影过程,反射过程。

然后你需要一些很好的着色器,其中一些支持漫反射贴图,法线贴图,高光贴图,环境遮挡贴图,支持点光源,定向灯,聚光灯等光线贴图等功能。

您需要管理纹理,将它们输入和输出并将它们应用到模型中。

所以......这些是3D引擎包为你做的一些事情。还有更多。

编辑:那就是说,如果你想要的只是显示一个地球仪,那么使用一个成熟的引擎是过度的。为此,你需要像OpenGL这样的东西,创建一个地球模型(=一个简单的球体),对它应用一个纹理,设置一两个光,然后渲染它。

答案 1 :(得分:0)

3D引擎可以帮助您完成许多事情:

  • 它们通常带有预定义的数据格式,因此您无需创建自己的数据格式。有时它们还带有可以帮助您创建3D对象的漂亮界面的工具。或者,他们可以加载或转换流行的文件格式,以便您可以使用流行的工具来创建3D。
  • 它们带有渲染循环和可能的事件循环,因此您不必实现这些。这通常比自己做更容易。
  • 他们已经编写了算法来隐藏表面去除。
  • 它们具有高级功能,可以使用它们为您提供的对象轻松完成复杂的操作。