我一直在使用 XNA 制作 PC 游戏,我正在使用 RenderTarget2D 进行照明,方法是在一个中绘制世界的东西,然后在另一个中绘制 lightmask 的东西。无论如何,我一开始使用我的 1920x1080 显示器并没有遇到任何问题,但我刚刚升级到 27" 2560x1440 S-IPS 显示器,现在我遇到了一个错误,因为我的显示器分辨率设置为高于 2048,这显然是纹理可以是最大尺寸。
它正在尝试绘制大小为 2560 x 1440 的纹理,因此我需要找到解决该限制的方法。我想对于大屏幕,我可以以某种方式将其拆分为多个 RenderTarget2D。我的问题是我如何通过光罩:
drawMain();
drawLightMask();
ScreenManager.SpriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend);
lightingEffect.Parameters["lightMask"].SetValue(lightMask);
lightingEffect.CurrentTechnique.Passes[0].Apply();
ScreenManager.SpriteBatch.Draw(mainScene, new Vector2(0, 0), Color.White);
ScreenManager.SpriteBatch.End();
我确定其他人不得不处理这个问题,所以也许有人对我如何解决这个 2048 限制有一些想法?
编辑:另一个想法..也许当我检测到分辨率很大时,我只是将其设置为较低而不是默认设置为当前分辨率。这样就真的不用担心了。这种方式的问题在于,在全屏模式下,它会改变屏幕的分辨率,所以当他们退出游戏时,它必须再次改变分辨率,而且有点混乱。然后在无边框窗口模式下,窗口更小,但似乎并没有改变你的分辨率。