`
micheal19840929
  • 浏览: 163081 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

M3G游戏中性能提升技巧

    博客分类:
  • J2ME
阅读更多

      JSR184 M3G(Mobile 3D GraphicsTM)是针对移动3D应用的一个简明3D API接口集,Motorola E680/E680i/A780支持这个集合。M3G仅仅是一个高级的java接口,在E680/E680i/A780中底层的实现是由SuperScape开发的Swerve 3D引擎完成,它是一个针对Arm/XScale处理器的高性能3D引擎。

      下面是一些提升J2ME 3D游戏性能的技术技巧。记住,游戏玩家关心的是游戏的最终效果,而不是如何实现效果。

M3G中的基本概念

      在M3G中,Graphics3D渲染界面,World是整个3D场景,而Camera是视点。3D对象按照树形结构组织,并且通过点、多边形和网面定义。变换如移动、旋转和等比缩放通过矩阵相乘实现。

技术技巧

限制多边形总量

      对于Motorola E680/E680i/A780,强烈建议一个3D场景(包括人物、物体和环境)中的多边形总量必须不能超过1500。

混合2D和3D对象

      在J2ME 3D游戏中,2D对象消耗的资源远比3D对象少得多,然而有时效果看起来却很相似。那么在游戏中使用2D片段代替一些3D对象就是一个很好的主意了。例如,乌云、雪花或者广告牌可以很容易地转化为2d图像。有时,在背景图上直接绘图也同样能够减少资源消耗。

使用纹理模拟动画

      在3D游戏中,有一些小对象需要相对复杂的动画以使它们显示更具现实性。例如,为了描绘汽车在小屏幕游戏中奔跑,你需要一些动画效果来使玩家知道汽车是在实际的奔跑。但是全部使用真实的3D模型来模拟这个动作是不必要的,也是不切实际的。一个可用的方式就是改变对象的纹理,使其看起来像在奔跑。

把大网面分成几部分

      在E680/E680i/A780种使用的swerve引擎支持几何剔除(或者网面剔除)。例如,在视口中的立方体有些不可见的面可以被忽略。但是一个网面只有全部不可见时才能被忽略。

      更确切地说,如果你有一个网面覆盖了无限的区域(例如,道路)并且作为一个网面对象导出,如果把这个网面划分为一些子网面将会得到更好的性能,因为在视口中只需要计算和渲染子网面。

      但是在把对象划分为多个部分中要找到一个平衡点。越多的部分,就需要越多的处理,因为场景树更大了。划分的部分越少,大对象就只有部分可见,就不能被剔除。找到平衡点需要不断的试验。

使用哈希表替换数学函数

      E680/E680I/A780使用XScale 300MHz作为它们的处理器。事实上,像大多数移动电话中的CPU一样,E680/E680I/A780中的CPU没有浮点处理器,也就是说这个CPU不得不使用整数来模拟浮点,这会花费大量的时间。

      函数如除、sin、cos和求平方根将会占据大量的计算资源。在移动3D游戏中,函数的精度要求是很低的 。使用哈希表(函数变量作为键(key),函数结果作为值(value))代替真正的函数将会提升浮点运算的性能。

键(Key

值(Value

Sin(0)

0

Sin(5π/180)

0.087155743

Sin(10π/180)

0.173648178

Sin(15π/180)

0.258819045

1:哈希表模拟sin

使用自发光的纹理代替光源

   

图1  材料和顶点色彩管道——JSR 184文档中的图片

如图所示,发光计算是在材料之上的。光——甚至方向光——要使用很多资源。如果对象是被照亮的,可以考虑代替创建你的纹理。

注意

    在移动电话中,内存和计算资源都是有限的,因此一个好的J2ME 3D游戏的关键就是得到场景、效果和性能之间的平衡点。要得到这个平衡点,在实际的手机上进行不断地进行试验一直都是很有必要的。

分享到:
评论

相关推荐

    M3G API Docs

    M3G Application Progress Interface documents

    M3G 的快速模式编程

    尽管M3G、OpenGL ES和Mascot Capsule API各有特点,但M3G获得了广泛的厂商和运营商支持,适用于多种3D内容的创建,不仅限于游戏。 【3D对象创建】:通过M3G,开发者可以创建基本的3D形状,如立方体,该立方体存在于...

    Cortex-M3权威指南(中文).zip

    Cortex-M3权威指南(中文).zipCortex-M3权威指南(中文).zipCortex-M3权威指南(中文).zipCortex-M3权威指南(中文).zipCortex-M3权威指南(中文).zipCortex-M3权威指南(中文).zipCortex-M3权威指南(中文).zipCortex-M3...

    jsr_184_midlet.rar_DEMO_jsr184_jsr184-m3g.jar_m3g

    手机 JAVA JSR184 M3G 游戏 DEMO

    Mobile 3D Graphics with OpenGL ES and M3G

    Mobile 3D Graphics with OpenGL ES and M3G

    tk_m3gtk_v4_5.zip_m3g_tk_m3g_tk_m3gtk_v4_5

    tk_m3gtk_v4_5.zip tk_m3gtk_v4_5.zip 一款M3G文件查看器,Java J2ME中保留模式中必用。

    LoaderM3G.rar_j2me loaderm_m3g_手机加载_手机游戏加载

    J2ME 3D手机游戏开发.加载M3G文件演示

    直播资源m3u直播资源m3u8

    直播资源M3U8,是一种用于传输多媒体流的标准格式,广泛应用于网络直播领域。...总体而言,直播资源M3U8是现代数字媒体领域中一项重要的技术创新,为实现更高质量、更智能化的直播服务奠定了坚实基础。

    m3g 3d jsr184中文文档

    3d jsr184中文文档 30个类大致的汉化,初学者可以参考一下 文件中包含两个m3g 3d api文档,另一个是原英文版的 翻译的会有些问题,耍要自已对照英文原版捉摸一下 ^ ^

    Java M3G相关类.rar

    Java M3G相关类,Mobile 3D手机游戏图形开发类库示例,M3GCanvas.java、M3GMidlet.java是一个适合初学者学习Java M3G的相关示例代码。

    3650M3升级uEFI_IMM微码实例

    "IBM 3650M3 uEFI微码升级实例" 本文将详细介绍IBM 3650M3微码升级实例,包括升级前的准备工作、IMM的连接和登录、Firmware Update的步骤等。 IBM 3650M3 微码升级实例概述 IBM 3650M3微码升级实例是指通过IMM...

    3650 m3微码固件升级.zip

    uefi和imm微码固件升级包,此为目前最新版本,适用于IBM system x3650 m3服务器。

    武汉长光科技有限公司OpticalinkM3-0400G用户手册.pdf

    武汉长光科技有限公司OpticalinkM3-0400G用户手册 武汉长光科技有限公司的OpticalinkM3-0400G...10. 版本升级:OpticalinkM3-0400G ONU的版本升级需要按照手册中的升级方法进行,确保产品的正常使用和最新的功能特点。

    M3G Viewer:查看M3G文件内容-开源

    M3G查看器是一个独立的应用程序,用于查看3D图形文件格式的内容,该格式是对移动3D图形API(M3G)的补充。

    M3电脑系统升级操作说明 .doc

    【M3电脑系统升级操作说明】 在IT领域,系统升级是一项常见的维护工作,尤其是对于专用设备如M3电脑。...遵循以上步骤,用户可以安全有效地对M3电脑系统进行人脸升级,确保设备保持最佳性能和安全性。

    Cortex-M3 技术参考手册(中文)

    Cortex-M3 技术参考手册(中文) Cortex-M3 技术参考手册(中文)

    索尼A7M3 ILCE-7M3 升级固件 版本4.0

    适用机型:A7M3(ILCE-7M3) 固件版本:4.00 真机Win10 64位实测可用,升级正常 注意升级过程要按照软件内提示进行 目前测试升级后使用转接佳能镜头使用没问题,有反馈说副厂电池会被检测到,如果是副厂电池用户请...

    jsr184+M3G+API.rar

    jsr184+M3G+API.rar

    华为m3-twrp

    华为m3-twrp 用于解锁之后准备root之用 亲测可用 已经解锁PO主手上的设备

Global site tag (gtag.js) - Google Analytics