国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

M3G游戲中性能提升技巧

2019-11-18 16:13:08
字體:
來源:轉載
供稿:網友

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

使用自發光的紋理代替光源

    M3G游戲中性能提升技巧

點擊查看大圖


圖1  材料和頂點色彩管道——JSR 184文檔中的圖片

如圖所示,發光計算是在材料之上的。光——甚至方向光——要使用很多資源。如果對象是被照亮的,可以考慮代替創建你的紋理。

注意

    在移動電話中,內存和計算資源都是有限的,因此一個好的J2ME 3D游戲的關鍵就是得到場景、效果和性能之間的平衡點。要得到這個平衡點,在實際的手機上進行不斷地進行試驗一直都是很有必要的。

(出處:http://www.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 恩施市| 会泽县| 乌兰察布市| 上犹县| 崇礼县| 紫金县| 驻马店市| 吴江市| 南昌县| 蒙山县| 宁安市| 普格县| 宣武区| 金阳县| 禄丰县| 龙川县| 榕江县| 永胜县| 隆德县| 峨眉山市| 攀枝花市| 肇庆市| 仙游县| 榆树市| 贵定县| 英吉沙县| 千阳县| 泌阳县| 太原市| 黄山市| 华池县| 洪泽县| 乌拉特中旗| 应用必备| 灌南县| 清原| 浠水县| 龙游县| 西畴县| 泽普县| 新建县|