Unity3D:从RenderTexture的一个像素创建纹理

时间:2014-01-21 00:51:12

标签: c# unity3d render-to-texture

我有一个纹理,我从相机渲染。我想从这个纹理中获取一个单个像素值并制作新的纹理(1 x 1像素)然后我想要应用于某些对象。

有没有办法定义一个纹理,其colorBuffer只是另一个colorBuffer的长度为1的数组?是否有一种编写着色器的简单方法可以有效地完成相同的任务?任何帮助赞赏。

1 个答案:

答案 0 :(得分:1)

您正在寻找

GetPixel()SetPixel()

Color pixel = yourTexture2D.GetPixel(x, z);
Texture2D newTexture = new Texture2D(1,1);
newTexture.SetPixel(0, 0, pixel);
newTexture.Apply();

请注意,Texture2D.Apply() cpu很贵,但与纹理的大小成正比,所以你可以侥幸逃脱。

另请注意,您可能需要根据x的大小调整坐标zyourTexture2D,如下所示:

int x = transform.position.x / size.x * yourTexture2D.width;

有关此调整的详细信息,请查看documentation