• 沒有找到結果。

第四章、 實驗數據分析與討論

4.1 實驗環境

本實驗目的是要測試當 3D 繪圖程式使用 AWT、Swing 及 CWT 當做 UI 介面時的繪圖效能。表 4-1 則是本實驗的軟硬體環境。

 

中央處理器 Intel Core Duo T2500 2.0GHz 記憶體 2G DDR2 667

繪圖卡 ATI Mobility Radeon x1600 128MB VRAM 支援 OpenGL 2.0

螢幕解析度 1280x800 作業系統 WinXP SP3

Java 版本 1.6.0_07

表 4-1:實驗軟硬體設備表 

本次實驗所使用的 3D 測試程式,是一個不斷在旋轉的立方體,代表

3D 繪圖的內容,並且完全使用表 3-1 所使用到的參數,此方塊六個面的 顏色都不一樣。而在 2D CWT-GL 部分,則會分別測試在同一個畫面上,

也就是在旋轉的方塊放上 1 個元件,在這邊我們選擇用(Checkbox), 與放上 60 個元件如圖 4-1。為何會選擇 60 的原因是因為現今大多數的 3D 遊戲 GUI 介面大多最多 50 左右,所以本實驗測試選擇放置 60 元件到 3D 畫面上來測試是否繪圖效能會受到影響。

圖 4-1:3D 圖形混合 2D 元件實驗畫面 

此外,因為現今 3D 遊戲 GUI 的設計多樣式,並部會固定使用原來就

設計好的 AWT 元件樣式,所以本實驗也會測試元件是否可以做透明及形 狀的改變這些效果。

4.2 實驗數據分析

在這次實驗中測得實驗數據表 4-2,y 軸表示的是每秒鐘畫面畫了幾 次(Frames per second,以下簡稱 FPS),當 FPS 值越高時代表繪製的 效能越好,x 軸則列出三組數據 AWT、Swing、CWT,並個別測試在 1 個 元件及 60 個元件時的 FPS 變化,最下面那排,則表示這三種方法是否 可以做到透明及不規則形狀的效果。

表 4-2:實驗數據分析長條圖 

首先 AWT 的速度最快,不管是繪製 1 個元件或是 60 個元件其 FPS 都 達到 900 多,這是受惠於重型元件由作業系統生成,而本程式都是由 OpenGL 所繪製,在測試時所得到的數據相當於是方塊本身繪圖的時間而 已,並沒有加上 AWT 元件火繪製花費的時間,但相對的,重型元件的缺 點是不能做透明及矩行以外的形狀改變,在現在講求畫面的 3D 遊戲上 幾乎沒辦法使用。

而 Swing 因為是輕形元件,所以可以做到透明跟形狀上的改變,但 必須使用軟體繪製在別的 Frame buffer 上,再複製到 OpenGL 的 Frame buffer,而且在繪製的過程還要做切換,Java 繪圖函式又無法使用繪圖 加速卡的功能,所以 FPS 只有 120,而當元件增加到 60 個時,繪製速度 會低於 100 降到 85 附近。

本論文所整合的 CWT 元件系統,因為是使用 OpenGL 實做,所以做到 透明或是形狀改變都沒有問題,而且藉由 OpenGL 的繪圖加速卡加速,

在單一元件時 FPS 可以達到 860 是 Swing 的 7 倍多,在多元件的情況下,

FPS 下降到 460,幾乎是原來的一半但是與 Swing 相比,是 Swing 的 5 倍多,證明即使在多元件使用時,仍然可以得到比 Swing 更好的繪圖校 效能。

本實驗證明了 CWT-GL 的元件可以與 3D 繪圖混合使用,並且得到比

Swing 更好的效能,同時因為 CWT-GL 可以做到元件透明或是不規則形狀 的效果,所以比 AWT 更為實用。與純 OpenGL 相比,CWT-GL 已實作出了 現成的元件庫,讓開發者可以直接使用,在產能方面得到更佳的結果。

第五章、 結論與未來展望

本論文的目標是使 CWT 能與 3D 畫面做一個整合,讓 3D 遊戲開發者 能有現成的元件庫可以使用,且提昇 Java 基本繪圖函式庫的效能。經 過實驗證明,CWT 的元件系統確實能與 3D 繪圖畫面共同使用,而且可以 做到透明及不規則形狀的效果,在效能測試上,更可以提高使用 Swing 作為 GUI 的 3D 繪圖畫面效能到 5 倍甚至是 7 倍之多,達到我們開發遊 戲所需要的效能跟產能。

本論文最主要是要證明 CWT 能與 3D 繪圖混用,但要實際使用在現 今的 3D 遊戲上面,還要進行更多及更複雜的測試,此外,當元件數量 變多時,CWT 的效能會下降許多,在未來這也是可以改進的地方。

期望 CWT 能實際應用於 3D 遊戲繪圖上,也希望藉由本論文在效能上 面的提升,能使 3D 遊戲更為進步。

參考文獻

[1] Caspian Rychlik-Prince, Brian Matzon, Elias Naur, Erik Duijs, Ioannis Tsakpinis, Mark Bernard, "LWJGL, Lightweight Java Game Library", available from http://www.lwjgl.org/.

[2] Evan Quinn and Chris Christiansen, "Java Pays – Positively, " IDC Bulletin #W16212, 1998. http://www.idcresearch.com/

[3] Jacob Marner, "Evaluating Java for Game Development", Department of Computer Science University of Copenhagen, Denmark, 2002.

[4] James Elliott, Robert Eckstein (Editor), Marc Loy, David Wood, Brian Cole, "Java Swing", Second Edition, O'Reilly, 2002

[5] John Zukowski, "Java AWT Reference", O'Reilly, 1997.

[6] Microsoft Corporation, "Microsoft SDK for Java 4.0", 1999, available from http://www.microsoft.com/.

[7] Yi-Hsien Wang, and I-Chen Wu, "An AWT/Swing like graphics toolkit for cross-platform Java game development," submitted to Software Practice and Experience, September 2007

[8] Yi-Hsien Wang, I-Chen Wu, and Jyh-Yaw Jiang, "A portable AWT/Swing architecture for Java game development," Software Practice and Experience, Vol. 37, Issue 7, June 2007; 727–745.

[9] Sun Microsystems, "Java 2 SDK, Standard Edition Documentation Version 1.2.2_006", 1999, available from

http://java.sun.com/products/archive/j2se/1.2.2_017/index.html.

[10] Sun Microsystems, "The AWT Native Interface", available from

http://java.sun.com/j2se/1.5.0/docs/guide/awt/1.3/AWT_Native_Int erface.html

[11] Sun Microsystems, "Java 2 SDK, Standard Edition Documentation Version 1.3.1", 2001, available from

http://java.sun.com/j2se/1.3/docs/index.html.

[12] Sun Microsystems, "Java SE 6 Features and Enhancements", available from

http://java.sun.com/javase/6/webnotes/features.html

[13] Microsoft Corporation, "DirectX 7.0 SDK", 2000, available from

http://www.microsoft.com/.

[14] 智凡迪, "魔獸世界", available from

http://www.wowtaiwan.com.tw/

[15] 遊戲橘子, "天堂", available from

http://service.gamania.com/lineage/index.asp.

[16] 姜智耀, "CWT ― The AWT API over Different Graphics Libraries", 交通大學資訊工程系, 碩士論文, 2005

[17] 鄭欽議,”

The Study of OpenGL Implementation of CWT”

交通大學資訊工程系, 碩士論文, 2007

相關文件