作者xinzShin (新)
看板GameDesign
標題[請益] XNA - 2D遊戲的全螢幕問題
時間Sun Jun 19 11:59:15 2011
是這樣的:晚輩正使用XNA 3.1執行一款2D遊戲專案。
目前在全螢幕模式的設計上遇到些瓶頸,所以特別到此請教前輩們:
graphics.PreferredBackBufferWidth = 960;
graphics.PreferredBackBufferHeight = 540;
graphics.IsFullScreen = true;
上段程式碼已經確實地將視窗轉換成全螢幕,不過內容圖片卻沒跟著改變。
也就是說:原本視窗長寬為960x540,現在變成了1280x720;
理應內容圖片也該跟著一起放大1/3才對,但它卻仍保持原狀。
※ 請問我是否遺漏了什麼關鍵步驟?
在發問前,對這個問題我想了兩個解決方法:
1. 從SpriteBatch.Begin()上著手。利用Matrix.CreateScale()作放大。
2. 從SpriteBatch.Draw()上著手。繪出時直接在postation和scale的地方做調整。
但這兩種方法都有個缺點。就是會在圖片周圍產生白點。
如圖
http://ppt.cc/pcwx。圖左是原尺寸;右則是放大1/3後。
※ 請問:這是圖檔(.png)所造成的現象還是DirectX的問題?有解嗎?
另外,當玩家螢幕不符合遊戲預設的長寬比時,
常見的作法是在畫面多餘的部份用黑邊來填補。
在這晚輩想到的解決方法是:
1. 在多餘的部份蓋上黑色區塊。
2. 利用Rectangle()指定繪出的部份。
想知道一般遊戲設計時,遇到這種情況都是怎麼處理上下黑邊的?
以上三個問題,懇請前輩們給個方向。
--
永遠的程式新手 |||orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.119.126.2
推 darkflier:XNA不熟但是看起來是ViewPort沒設定 06/21 11:32
目前用Viewport解決第三個問題了。謝謝 :)
另附上關鍵的code回饋
(毒害)板上:
Viewport viewport = graphics.GraphicsDevice.Viewport;
viewport.Width = 1280;
viewport.Height = 720;
//繪出的範圍大小
graphics.GraphicsDevice.Viewport = viewport;
推 help0430:第一個問題是全螢幕~第二個問題是黑邊~~哪裡有第三個問題 06/22 15:12
問題一是全螢幕問題。
問題二是圖片縮放產生白邊的問題。
(這個我猜想會不會是因為SpriteBatch.Draw()裡的濾鏡Color.White的關係)
問題三則是處理黑邊,靠darkfiler大的指點,這個問題已經解決了。
※ 編輯: xinzShin 來自: 219.85.33.220 (06/22 17:06)