首页 > 解决方案 > 更改 RenderTexture 中的像素

问题描述

我是统一的新手,我正在做的大学研究必须使用统一。为此,我需要渲染场景并使用外部工具来修改渲染图像数据。该工具需要读取所有像素并根据原始数据生成单独的图像。到目前为止,遵循https://github.com/Unity-Technologies/NativeRenderingPlugin我能够更改纹理。然而,将渲染纹理传递给 dll 什么也没做。有人可以帮忙吗。

这有效:


 tex.filterMode = FilterMode.Point;

tex.Apply();


// Set texture onto our material

GetComponent<Renderer>().material.mainTexture = tex;

SetTextureFromUnity(tex.GetNativeTexturePtr(), tex.width, tex.height);

这不起作用:

Camera camera = Camera.main;

var rt = RenderTexture.GetTemporary(Screen.width, Screen.height);

camera.targetTexture = rt;

camera.Render();

       

var currentRT = RenderTexture.active;

RenderTexture.active = camera.targetTexture;



camera.Render();

Texture2D image = new Texture2D(camera.targetTexture.width, camera.targetTexture.height);

image.ReadPixels(new Rect(0, 0, camera.targetTexture.width, camera.targetTexture.height), 0, 0);

image.Apply();



RenderTexture.active = currentRT;

camera.targetTexture = null;

SetTextureFromUnity(image.GetNativeTexturePtr(), image.width, image.height);

任何帮助是极大的赞赏。卡在这个上面很久了。

标签: c#unity3d

解决方案


推荐阅读