寻找适用于 iOS 和 Android 的基本 2D/3D 图形的跨平台方法

Posted

技术标签:

【中文标题】寻找适用于 iOS 和 Android 的基本 2D/3D 图形的跨平台方法【英文标题】:Looking for a cross-platform method for basic 2D/3D graphics for iOS and Android 【发布时间】:2012-03-12 20:00:41 【问题描述】:

我正在使用它们的原生 SDK 分别为 androidios 开发一个应用程序。 但是,应用程序中有一些模块应该支持基本的 2D(也可以是 3D)能力,例如矢量图形的倾斜、缩放、旋转以及在简单纹理平面上的各种可选花哨效果。

我想将这个模块托管在某个视图中,并且它的代码将尽可能在 iOS 和 Android 平台之间共享。

我一直在网上寻找各种解决方案。

    首先是 OpenGL,问题是我不熟悉 OpenGL 的编码,我无法理解我将使用 OpenGL 编写的代码是否可以在 2 个平台之间共享。似乎没有人真正尝试过使用 NDK 之类的东西。

    有类似的平台

    一个。 Clutter (http://www.clutter-project.org/) - 我找不到任何关于它在移动设备上的使用示例。

    b.像 Unity3D 这样的平台,虽然我认为它们对我帮助不大,因为据我所知,整个应用程序必须在他们的平台上运行,而这不是我想要的。

那么,你们认为在 iOS 和 Android 之间共享 2d/3d 代码可行吗? 如果可以,有什么方法可以推荐吗?

或者我应该只使用每个设备的原生方法来处理 2d 或 3d 图形?

谢谢!

【问题讨论】:

【参考方案1】:

Kivy:一种开源跨平台编程语言,用于为 Linux、Windows、MacOSX、Android 和 iOS 编写基于 OpenGL 的绘图、界面、视觉效果等任何东西。 kivy.org

您可能会放弃对 Kivy 小部件使用 Android 或 iOS 原生小部件,并且您的应用将在所有平台上拥有相同的 OpenGL 驱动界面。

编辑 2011 年 9 月 27 日下午 1 点:我做了更多研究。总而言之,您应该自己查看这 4 个开源框架,然后决定哪一个最适合您(我可以列出商业框架,但很容易找到):

    基维 (kivy.org) 令人惊叹的 GUI 和小部件库。 HaxeNME (haxenme.org) 非常好的 2D/3D API,用于制作 OpenGL 图形。 惊人的跨平台支持。所有框架中最好的。 很遗憾,虽然没有内置 GUI 或小部件库。 Qt Quick QML (qt-project.org) 非常好的 2D/3D API,用于制作 OpenGL 图形。 类似于 html,但用于 OpenGL。已经了解 HTML 和 javascript? QML(快速标记语言)包括文本字段、单选按钮、复选框等基本必需品,可以通过事件处理程序进行动画和控制。 QML 应用程序中的动画、事件处理程序等是用 JavaScript 编写的;不同之处在于 JavaScript 被编译而不是解释。 Qt Quick 真的很棒;我个人的最爱。阅读 Qt Quick QML,然后尝试适用于 Android 的 Animated Tiles 应用程序,了解 Qt Quick 的潜力。 Qt 的最新版本(即将推出)支持 iOS、Android 和 Blackberry 以及所有桌面操作系统。 Windows Phone 是一项正在进行的工作,但考虑到 Qt Quick 已经支持 Windows 8 的 Metro 平台,它很快就会到来。 Qt Quick 非常好,但它并不像 HaxeNME 那样适用于每个平台。 MoSync (mosync.com) 隐藏的宝石。这个框架需要更多的曝光。 MoSync SDK 提供了一个跨平台的 OpenGL 框架、一个类似于 PhoneGap 的 HTML/JavaScript 框架、一个用于跨平台编写使用每个平台的本机 UI 小部件的应用程序的 NativeUI 框架,以及一个用于编写 C++ GUI 的 MAUI。 如果您只想编写纯 OpenGL,那么我至少建议您查看 MoSync,因为它提供了 OpenGL ES 1.0/2.0 的一对一实现。

此外,如果您的应用将基于表单(不像游戏那样具有动画效果),那么 PhoneGap 可能会满足您的需求。如果您使用 HTML5 的正确功能,您可以制作出原生的应用程序(不像那里的许多可怕和令人沮丧的例子)。如果您想尝试使用 PhoneGap 制作的“原生”应用,请尝试“Go 2012”。 Go 2012 应用程序证明,如果您正确使用 HTML5,您可以利用跨平台的硬件加速(iOS、Android、Blackberry 和 Windows Phone(我在所有平台上都测试过))。 Go 2012 中的动画(滚动等)都是 CSS3 硬件加速动画。 不要让 PhoneGap 展示中的大多数应用质量低劣欺骗了你!

【讨论】:

看起来很有趣!我会尽快看看它是否能满足我的需求。【参考方案2】:

使用 OpenGL ES 并用 C 编写代码。为 Android 编写一个 NDK 包装器。从理论上讲,您的开放式 GL C 代码应该可以在 2 个平台之间重用。

【讨论】:

【参考方案3】:

你有没有关注过小公司的名字Adobe

尝试使用 Air。

人们不欣赏 Adob​​e 所做的辛勤工作,但它是市场上最强大的跨平台!

支持:

具有 DirectX 访问权限的 Windows 可在 3D 和 2D 中加速您的应用。 Linux 具有 OpenGL 背景的 Android(2.2 及更高版本) 带有 OpenGL 的 iOS 黑莓

还有更多...如果您想在高水平上工作,请使用 Air!

【讨论】:

我能否仅将 AIR 用于我的应用程序的一小部分,而将其余部分留在常规的原生 Android/iOS 代码中? 是的,您可以使用air native来使用当前系统的本地语言,它将是java,带有Google中的所有android api和iOS的objective c。如果它只是您应用程序的一小部分,我会如何建议您使用导出到 HTML5 未来的 flash 这可能很好,但考虑到 Kivy、Qt Quick、HaxeNME 和 MoSync 是免费和开源的(而且很棒),为什么要购买 Air?

以上是关于寻找适用于 iOS 和 Android 的基本 2D/3D 图形的跨平台方法的主要内容,如果未能解决你的问题,请参考以下文章

是否有适用于 Android 和 iOS 的 OCR 开源库或 sdk(免费)? [关闭]

适用于 Android 和 iOS 的 2D 跨平台游戏引擎? [关闭]

基本用户身份验证适用于 Android,不适用于 iOS

寻找适用于 Android 的 SIP 堆栈 [关闭]

我正在寻找适用于 Android 的 BOSH XMPP 库

网站的 javascript 适用于 android、windows、linux 和所有浏览器,但不适用于 mac、ios 在任何浏览器上