草庐IT

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

coder 2023-09-20 原文

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

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

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

  1. 首先是 OpenGL,问题是我不熟悉 OpenGL 的编码,而且我无法理解我将使用 OpenGL 编写的代码是否可以在两个平台之间共享。似乎没有人真正尝试过使用 NDK 等来做到这一点。
  2. 有这样的平台

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

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

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

或者我应该只使用每个设备的 2d 或 3d 图形的 native 方法?

谢谢!

最佳答案

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

您可能会放弃为 Kivy 小部件使用 Android 或 iOS 原生小部件,您的应用程序将在所有平台上具有相同的 OpenGL 支持的界面。

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

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

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

关于android - 寻找适用于 iOS 和 Android 的基本 2D/3D 图形的跨平台方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9673958/

有关android - 寻找适用于 iOS 和 Android 的基本 2D/3D 图形的跨平台方法的更多相关文章

  1. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  2. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  3. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  6. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  7. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  8. [Vuforia]二.3D物体识别 - 2

    之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶

  9. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  10. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

随机推荐