2015-10-09 75 views
0

好吧,我們一直在處理這個問題,我們正在處理一個項目。XNA比例分辨率,同時保持寬高比?

我們正在使用500 x 1000像素的基本分辨率,並且所有內容均按該分辨率放置並移動。我們想要實現的是將基本分辨率縮放(同時保持寬高比)到實際分辨率,這可能是任何事情。我的意思是所有對象都被縮放(包括鼠標)。 它也應該全屏工作。

我們已經嘗試在SpriteBatch.Begin()方法中使用Matrix.CreateScale(),但它沒有保留高寬比,並且不能在全屏模式下工作。

我們真的很困惑什麼可以設置PreferredBackBufferWidth/HeightViewport.X/Y/Width/Height的值。

如果有人能指引我們在正確的方向或提供一些例子,我們會很感激。

謝謝!

回答

1

假設您真的只想將所有內容都縮放到新分辨率,您可以將500x1000中的所有內容都繪製到RenderTarget2D中,然後以任何您需要的分辨率將其繪製到實際圖形設備上。

但是請注意,這會拉伸圖像,並且如果您將圖像放大得太大,很可能會使圖像看起來很奇怪。但無論如何,這是如何做到這一點。

我們也有鼠標座標正確翻譯:

var mouseState = Mouse.GetState(); 
var translatedX = mouseState.X * (game.Width/screen.Width) 
var translatedY = mouseState.Y * (game.Height/screen.Height) 
Vector2 gameMouseCoordinates = new Vector2(translatedX, translatedY); 

在這種情況下,遊戲的寬度/高度爲500x1000,和屏幕寬度/高度將是實際分辨率(例如1920×1080)。

+0

謝謝,會試試看。這不會影響性能嗎? – Qub1

+0

與任何其他遊戲一樣,它是一款後期遊戲着色器。在這方面很簡單。所以不,它應該有一個非常小的性能影響。根本沒有什麼可知的 – Falgantil

相關問題