繁体   English   中英

在 Xna/MonoGame 中将纹理编辑为 2D 数组

[英]Edit texture as 2D array in Xna/MonoGame

我想通过将较小的纹理粘贴为瓷砖来程序化地生成纹理texture2D ,我在 Python 和 MatLab 中做过类似的事情,但不知道如何在 MonoGame 中做到这一点。

这个问题与我需要做的类似,但它在Draw()方法中生成纹理,在我的情况下这可能会影响性能。

这个问题一样,我想要生成纹理并返回它的东西,所以我可以将它初始化为一个字段,而不是每次在Draw()中重新生成纹理。

但是我不知道如何编辑texture2DTexture2DSetData() 方法相当混乱,新数据的类型是T[] ,我如何将另一个Texture2D作为T[]传递? Int32参数在做什么?

T参数很方便,也就是说,您可以传递原始字节而不是 colors。

简而言之,只要坚持T[]Color[] ] ,框架将在使用原始字节时处理所有细节,例如计算步幅/间距等。

在您的情况下,您可以执行以下操作:

  • 使用GetData从源图块获取 colors
  • 使用SetData将区域矩形设置为目标纹理中源图块的大小

要在Draw之外初始化它,我想LoadContent可能是一个好地方,因为此时GraphicsDevice不应该是 null 。

如果你必须在Draw中执行此操作,请使用简单的bool NeedsRefresh作为保护,检查它是否为真,如果是,则生成你的东西并将其设置为假; 代码块只会运行一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM