【问题标题】:Edit texture as 2D array in Xna/MonoGame在 Xna/MonoGame 中将纹理编辑为 2D 数组
【发布时间】:2021-02-23 17:07:37
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# xna monogame


    【解决方案1】:

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

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

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

    • 使用GetData 从源图块中获取颜色
    • 使用SetData在目标纹理中设置一个与源图块大小相同的区域矩形

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      相关资源
      最近更新 更多