我以為我會立即在某個地方找到答案,但顯然不是。所以這里是:
我需要為 Unity 中腳本(C#)中的每個幀更新將 RenderTexture 轉換為一維陣列。我怎樣才能做到這一點?
實際上就是這樣。其余的有點除了問題的重點之外,但讓我也解釋一下為什么無論如何我都需要這樣做:..這樣我就可以將一維陣列轉儲到 .csv 檔案中一行的單元格中。我會在每幀更新時收集資料(包括渲染的紋理資料),并使用 WriteLine(line) 寫入所有收集到的每幀資料。我的想法是,這將使我免于浪費計算時間,否則這些時間將用于編碼影像并將這些影像保存為每次更新時的單獨檔案。
uj5u.com熱心網友回復:
在這方面,RenderTexture 和底層的 Texture 物件沒有太多需要處理的地方。所以想法是將 RenderTexture 中的資料記錄為新的 Texture2D,并使用該新專案來讀取您要查找的資料。
這是一段代碼,應該讀取 Color32 結構型別的一維陣列(未經測驗):
public Color32 [ ] GetRenderTexturePixels ( RenderTexture renderTexture )
{
var texture = new Texture2D( renderTexture.width, renderTexture.height, TextureFormat.RGB24, false );
// record the current render texture.
var currentRenderTexture = RenderTexture.active;
// Set the new render texture.
RenderTexture.active = renderTexture;
texture.ReadPixels ( new Rect ( 0, 0, renderTexture.width, renderTexture.height ), 0, 0 );
texture.Apply ( );
// reapply the previous render texture.
RenderTexture.active = currentRenderTexture;
// Return then texture2d pixels. This assumes mipmap level 0.
return texture.GetPixels32 ( );
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533283.html
