我正在寫一個基於2D的引擎。目前,我的繪圖例程使用C#繪圖庫在每次刷新屏幕時重新繪製每個可見的圖塊。我滾動並縮放工作,一切看起來都是我想要的。但例程很慢。現在我正在努力改進它。我有幾個問題:繪製2D雪碧(位圖)有效地寫入
首先,我認爲在每次刷新時重繪瓦片是不必要的(因爲它們從不改變)。現在我試圖改變算法,以便在初始化時將整個地圖寫入單個位圖,然後在繪製時切割正確的位圖部分。你認爲這是正確的路嗎?我也考慮過把圖片留在背景中,然後滾動它,但後來我決定不想繪製視野之外的東西,但也許這比剪切/粘貼更便宜?內存vs時間問題?)
其次,據我所知,C#繪圖程序不使用GPU的全部功能。我認爲我應該嘗試在OpenGL(或DirectX,但我更喜歡前者,因爲它是多平臺)繪圖。這會有幫助嗎?你知道任何用於OpenGL的平鋪(或一般像素繪圖)教程嗎?圖書參考也可以提供幫助。
我現在也不做多線程(實際上我只是對這是什麼有一個模糊的概念)。我應該嘗試多線程抽屜嗎?或者OpenGL會使圖形冗餘的多線程?
謝謝。
XNA4.0在我問我的問題2周後問世。我試了一下,喜歡它,並轉向它。 XNA隱式管理DirectX,所以人們可以讓自己的精靈在四處浮動,而不用擔心任何事情。非常好。我的一個朋友使用WPF。這也可以正常工作,但我認爲你需要了解一些DirectX(沒有太大的問題)。再次感謝偉大的答案,夥計們。 – JackKane 2011-02-21 18:33:45