`
micheal19840929
  • 浏览: 165056 次
  • 性别: 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游戏的关键就是得到场景、效果和性能之间的平衡点。要得到这个平衡点,在实际的手机上进行不断地进行试验一直都是很有必要的。

分享到:
评论

相关推荐

    Mobile 3D Graphics with OpenGL ES and M3G

    - **双API支持**:书中不仅涵盖了OpenGL ES还深入介绍了M3G,这是当前移动设备上最流行的两种3D图形API。 - **实际操作性强**:读者可以通过实际编程练习来掌握所学知识,提高解决问题的能力。 #### 三、核心知识点...

    J2ME手机游戏开发技术详解

    为了提升游戏性能,开发者需要理解并掌握事件驱动编程和线程管理。在J2ME中,游戏循环通常在一个单独的线程中运行,以保持流畅的游戏体验。同时,内存管理和优化也是关键,因为早期的移动设备资源有限。 书中还可能...

    顶尖J2ME手机游戏3D MotoRacer全程制作揭秘

    2. **3D图形库**:在J2ME中实现3D效果,通常需要使用第三方库,如JOGL (Java OpenGL) 或者M3G (Mobile 3D Graphics API),尽管M3G是J2ME的一部分,但在实际开发中可能需要对底层进行优化和扩展。 3. **游戏引擎**:...

    J2ME手机游戏程序设计

    开发者可以通过第三方库如LWUIT或M3G扩展图形能力。音频方面,可使用MIDP的Sound和Player类播放音频文件。 10. **性能优化** J2ME设备的资源有限,因此游戏代码需要优化以提高运行效率。减少对象创建、合理使用...

    J2me开发的坦克大战游戏

    4. 网络通信:如果游戏支持多人对战,可能需要使用J2ME的无线通信API,如WMA(Wireless Messaging API)或JSR 118(M3G API)进行数据交换。 三、游戏开发流程 1. 设计游戏规则:明确游戏的目标、胜利条件、玩家...

    Export 184 插件使用手册

    M3G(Mobile 3D Graphics)格式是为移动设备量身定制的,考虑到手机和嵌入式设备的性能限制,M3G提供了轻量级的3D图形表示方案。它支持基本的3D几何、纹理映射、光照、动画以及视图控制等特性,确保在低功耗设备上也...

    J2ME手机编程源代码

    3. **Game API**:J2ME提供了一些专为游戏设计的API,如WMA(Wireless Messaging API)和M3G(Mobile 3D Graphics API)。这些API可以帮助开发者创建动画、处理事件、播放声音以及实现3D图形。 4. **事件处理**:在...

    兆易创新GD32130G-START(GD32F130G8U6)单片机开发板PDF原理图+固件库源码.zip

    开发者还需要了解如何配置工程、设置中断、调试技巧等,才能充分发挥GD32F130G8U6的性能。 总之,兆易创新GD32130G-START开发板的PDF原理图和固件库源码是开发者学习和开发的宝贵资源。通过深入研究这些资料,...

    基于STM32F103RCT6单片机+CH340G最小系统评估开发板硬件(原理图+PCB)工程文件.zip

    STM32F103RCT6是一款由意法半导体(STMicroelectronics...此外,还可以深入研究PCB设计的技巧,如信号完整性、电源完整性、EMC/EMI考虑、热设计等方面的知识,这对于提升电子产品的设计能力和解决问题的能力大有裨益。

    STM32视频学习教程视频 49集5.6G(包括原理图,源代码).zip

    例如,Cortex-M3、Cortex-M4和Cortex-M7内核在性能和功能上的差异。讲解内容可能涉及STM32的GPIO(通用输入/输出)、中断系统、定时器、串口通信、ADC(模拟数字转换器)和DMA(直接内存访问)等常用外设的使用。 ...

    电子-芯片手册.zip

    STM32 F1系列是基于Cortex-M3内核的,它在性能和功耗上相对于F0有所提升,适合中等复杂度的嵌入式应用。F1系列拥有更强大的计算能力和更多的内存选项,包括增强型和基本型两个子系列,以满足不同级别的性能需求。其...

    32原理图加pcb

    标题中的“32原理图加pcb”指的是基于STM32微控制器的电路设计,包括了原理图(Schematic)...通过分析和理解这些设计,可以深入学习STM32的工作原理,掌握电路设计和PCB布局的基本技巧,从而提升自己的硬件开发能力。

    STM32.docx

    - **Cortex-M内核**:理解ARM Cortex-M系列的特点,如M0、M3、M4、M7等不同内核的性能差异,以及它们的寻址方式、异常处理机制等。 - **STM32架构**:熟悉STM32的不同系列(如F0、F1、F2、F3、F4、L0、L1等),以及...

    HLK-M35 使用手册

    【mt7681开发分享.pdf】可能是更深入的MT7681开发教程或者案例分享,可能包含更多关于驱动开发、固件升级、API使用等方面的实践经验和技巧,帮助开发者更好地利用MT7681的全部潜力。 总之,HLK-M35和MT7681是物联网...

    STM32F103VET6单片机加速度传感器实验 for ucgui ucos 源码.rar

    STM32F103VET6是一款基于ARM Cortex-M3内核的微控制器,由意法半导体(STMicroelectronics)生产。这款芯片在嵌入式系统设计中广泛应用,尤其在物联网、工业控制以及消费电子等领域。在这个实验中,我们将会讨论如何...

    STM32+0.96OLED代码

    1. **STM32微控制器**:STM32家族基于ARM Cortex-M内核,包括M0、M3、M4、M7等多个型号,具有丰富的外设接口和高性能计算能力。在本项目中,可能使用的是支持SPI或I2C通信协议的型号,如STM32F103C8T6。 2. **OLED...

    HX8353_1.44寸屏幕STM32驱动代码、显示图片及汉字的方法.zip

    7. **应用笔记**:这些笔记通常包含实际应用中的经验和技巧,可能是关于如何优化驱动性能,解决兼容性问题,或者提升显示效果的建议。 8. **芯片手册**:芯片手册是理解HX8353功能和操作的官方文档,包括引脚定义、...

    基于STM32F207移植ucos2(2.93.01)

    《基于STM32F207移植ucos2(2.93.01)详解》 嵌入式系统开发中,操作系统的选择至关重要,而uC/OS-II(简称ucos2)作为一款轻量级...熟练掌握这些步骤和技巧,对于提升嵌入式系统的开发效率和产品质量具有重要意义。

Global site tag (gtag.js) - Google Analytics