对于我的新应用程序,我想要一个原生的iOS或
Android UI,以及一个显示一些图形的3d视图.虽然我最初计划在WebView中使用CSS转换来实现所需的3D效果但是失败了,因为性能并非接近可用,我正在寻找另一种解决方案.以下是我认为的选择:
1.在OpenGL ES中重新创建场景
我将在OpenGL中重新创建我们的图形引擎.这肯定是可能的,但对于像我这样以前从未做过3D编程的人来说可能很难做到.是否可以将为iOS编写的OpenGL代码移植到Android?或者我必须两次创建引擎?
2.使用像Unity3d这样的现成3D引擎
我偶然发现了Unity3d,Marmalade和类似的工具,这些工具可能会帮助我更轻松地创建3D场景.但是,乍一看似乎我必须在相应的创作系统中创建整个应用程序.除了三维视图外,我还要使用原生控件.那些工具可以吗?如果是,是否可以将3D从iOS移植到Android,反之亦然?
我问过正确的问题吗?我做出了正确的假设吗?你觉得有什么不对吗?我错过了什么?
这些都是我的选择吗?或者是否有其他东西,某种混合解决方案?
我应该选择哪个选项?
编辑:为了澄清,我不想在3d视图中显示iOS或android控件,而是围绕它:用户界面将是原生的,3d部分将包含在一个视图中.
最佳答案 相当复杂的一个;-)
(1)OpenGL与引擎:
我认为有可能以可移植的方式编写OpenGL代码的主要部分,例如在C中使用iOS上的Objective-C和Android上的NDK(只是一个想法,从未使用过NDK).现在它取决于图形部分去哪里.如果你说图形,你的意思是你“只”需要功能图来在屏幕上绘图吗?或者你有更多的对象,如游戏或建筑应用程序,以在OpenGL中显示?
如果是后者,那么更大的问题似乎是模型的无缝集成.每个包含多个立方体的场景都是在建模工具中设计的,可以导出为多种格式(obj,dae,fbx,…).但是你需要将它导入你的应用程序.无论是Unity,SIO2,Bork,Unreal,Oolong,还是游戏引擎都可以发挥作用……
如果需要绘制图形,可能需要考虑手动OpenGL解决方案.虽然即便如此,对现有引擎的一些研究也许是有用的,因为OpenGL不是那么直观,你需要一些时间来交朋友.我在直接使用OpenGL的iPhone应用程序中绘制了多个带缩放,着色等图形的图,但这是一个纯粹的研究项目,可移植性不太重要.
(2)将OpenGL与GUI元素混合
基本上,不可能在OpenGL视图中显示标准UIButton.但您可以拥有OpenGL视图和常规UI视图,并在它们之间切换.我不知道有什么工具可以让你同时做基于OpenGL的东西和常规的GUI编程,还可以进一步平台化.
因此,一方面,您需要在您选择的工具中创建3D内容,然后集成本机UI代码.对于Unity和iOS,有一些资源如何做到How to access Unity assets natively on Android or iPhone?或Mixing Unity generated code with Objective-C in iOS?
另一方面,您需要一个独立于平台的框架来完成常规GUI编程,以便您可以在Android和iOS上运行它.我不熟悉这个主题,但我听说过基于Mono的框架.