簡體   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