我有一个纹理,我从相机渲染。我想从这个纹理中获取一个单个像素值并制作新的纹理(1 x 1像素)然后我想要应用于某些对象。
有没有办法定义一个纹理,其colorBuffer
只是另一个colorBuffer
的长度为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
的大小调整坐标z
和yourTexture2D
,如下所示:
int x = transform.position.x / size.x * yourTexture2D.width;
有关此调整的详细信息,请查看documentation。