2014-04-10 38 views
0

1)Re-Draw Vs Draw

這是一個哲學問題,但是...什麼是「正確」或「接受」的渲染方式(2d,我明白OGL的視角是如何工作的......) )在不同的分辨率?是否應該爲我的圖像(如Android APK)包含單獨的大小,並在一個畫布上單獨調整每個對象的大小,還是應該在設置分辨率的繪圖畫布上繪製,然後將該圖像的大小調整到另一個顯示畫布上?我一般來說,但是,如果你需要我是特定的,我使用Java來構建引擎。渲染:繪製一次或重新繪製? JOGL + Java2D + Java Swing會很麻煩嗎?

帶來的利益/問題:

#1) Resize at Draw 
    + No additional drawing step 
    + Sweet resolution 
    - Possible math/physics/placement issues 
    - Tons of math each step for scale 
    - Lots of resources 

#2) Resize at Render 
    + No additional math; one step 
    + One set of images; smaller res. package 
    + One set canvas size (easier to do math/phys./placement) 
    - Additional drawing step 
    - Poor resolution =(

這似乎#2是因爲利益VS問題數量的不二之選,但是......是什麼呢?有沒有標準的方式來調整2D遊戲的大小?

2)JOGL + +的Java2D的Java Swing

難道是繁瑣的使用JOGL,Java2D的,和的Java Swing在同一時間?在JOGL中做2D或佈局是否值得?爲什麼或者爲什麼不?

編輯:使用BufferedImage繪製並將BufferedImage渲染到與縱橫比相關的面板大小在swing中效率非常低。顯然,最好立即繪製到面板,同時單獨調整每個圖像/元素的大小。不是我的第一個假設...

編輯2:愚蠢的我......只是規模和翻譯圖形上下文大小調整後的分辨率的任何其他操作之前。性能提升超級酷炫。這是對這個問題的正確答案。一次繪製,縮放/翻譯。 B)

+0

更新:我最終從頭開始創建一個BufferedImage,原始分辨率的大小。然後,我將該圖像繪製爲顯示的大小,一次。 B) – MrMysterious2502

回答

1

我不能完全回答你的第二個問題,因爲我沒有太多的JOGL或Java2D經驗,但我沒有看到他們有任何衝突或麻煩的理由。

對於你的第一個問題,我可以肯定地說,這取決於。你的目標受衆是什麼?你的遊戲內存密集(注意許多遊戲都有高分辨率/低分辨率選項)?這是一個遊戲,將可用於大大不同的屏幕尺寸?如果是這樣的話,你可能想要提供2-3種不同的資產包,每種都包含不同的原始尺寸(最大尺寸)。繪製圖像的數學並不像你想象的那麼多。

另外:

如果構建了遊戲的正確方法,你就不必做太多的數學都沒有。如果您有某種類型的Camera類,負責查看您的GameWorld,那麼您只需縮放相機的圖像,而不是單獨縮放每個圖像。

+0

感謝您的意見。我的情況要求極端的便攜性,所以是的,它是更有意義的資源密集型和更少的內存密集型。我總是可以排除特定平臺不需要的資源。相機的想法是好的......也許我可以將一種OGL視角應用到我的2D視角(-1到1),這樣分辨率就成爲一個不成問題的問題。好答案。 – MrMysterious2502