【问题标题】:MonoGame Different Size RenderTargets and Scaling issuesMonoGame 不同大小的渲染目标和缩放问题
【发布时间】:2016-05-29 14:49:55
【问题描述】:

我有一些不同的控件,我正在绘制到不同大小的渲染目标。

如果我像这样将 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 设置为与后缓冲区相同的大小,那么它会显示得很好,但我想知道为什么它认为它应该缩小我的纹理,有没有办法关闭它?

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

【问题讨论】:

  • 这两个Draw 调用在同一个BeginEnd 内吗?

标签: monogame spritebatch


【解决方案1】:

当您绘制到 RenderTarget 时,仍会使用后台缓冲区(或首选后台缓冲区)。如果您从后台缓冲区尺寸缩小,则绘制到 RenderTarget 的任何纹理也将根据纵横比的任何变化进行缩放和修改。

如果您希望纹理保持相同的纵横比,则需要在绘制时跟踪缩放和纵横比以应用于目标矩形。如果您可以详细说明您要完成的工作,将很乐意详细说明或提供代码 sn-ps。

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2013-01-24
    • 2014-02-03
    相关资源
    最近更新 更多