MonoGame不同大小的RenderTargets和Scaling问题

时间:2016-05-29 14:49:55

标签: monogame spritebatch

我有一些不同的控件,我可以使用不同尺寸的渲染目标。

如果我像这样将64x64 textureA绘制到800x600渲染目标。

Graphics.SetRenderTarget(Canvas);
_spriteBatch.Draw(textureA, new Rectangle(0, 0, 64, 64), srcRectangle, Color.White)

然后使用类似这样的调用将800x600渲染目标绘制到1600x900屏幕

Graphics.SetRenderTarget(null);
_spriteBatch.Draw(Canvas, new Rectangle(100,100,800,600), Color.White

为什么它在屏幕上绘制的textureA非常扭曲和小。

如果我让我的Canvas与backbuffer的尺寸相同,那么它会很好,但是我想知道为什么它会认为它应该缩小纹理,有没有办法将其关闭?

我希望能够创建任意大小的渲染目标,然后以原始大小将它们绘制到屏幕上。这可能吗?

1 个答案:

答案 0 :(得分:0)

当您绘制到RenderTarget时,仍然使用后台缓冲区(或首选后台缓冲区)。如果从后缓冲区维度缩小,则绘制到RenderTarget的任何纹理也将通过纵横比的任何更改进行缩放和修改。

如果要将纹理保持在同一方面,则需要在绘制时跟踪要应用于目标矩形的比例和纵横比。如果你能详细说明你想要完成的任务,那么很乐意详细说明或提供代码片段。