作者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
1F:推 darkflier:XNA不熟但是看起来是ViewPort没设定 06/21 11:32
目前用Viewport解决第三个问题了。谢谢 :)
另附上关键的code回馈
(毒害)板上:
Viewport viewport = graphics.GraphicsDevice.Viewport;
viewport.Width = 1280;
viewport.Height = 720;
//绘出的范围大小
graphics.GraphicsDevice.Viewport = viewport;
2F:推 help0430:第一个问题是全萤幕~第二个问题是黑边~~哪里有第三个问题 06/22 15:12
问题一是全萤幕问题。
问题二是图片缩放产生白边的问题。
(这个我猜想会不会是因为SpriteBatch.Draw()里的滤镜Color.White的关系)
问题三则是处理黑边,靠darkfiler大的指点,这个问题已经解决了。
※ 编辑: xinzShin 来自: 219.85.33.220 (06/22 17:06)