Unity:特定显示的Texture2D ReadPixels

时间:2016-04-27 15:51:59

标签: camera pixels texture2d display unity3d

Unity现在支持多个显示输出(最多8个)。

使用ReadPixels功能,您可以指定要读取的区域和原点坐标。但我不能指定显示号码来执行读取操作。

我需要能够从特定显示(1-8)读取具有特定区域和原点的像素。

我该怎么办呢?

1 个答案:

答案 0 :(得分:0)

可以为特定屏幕/显示实现ReadPixels。您必须执行以下操作:

在开始之前,我假设您有许多相机,每个相机都渲染到不同的显示器。相机不得附加RenderTexture以输出到显示器。

定义一个执行以下操作的函数:

  1. 为所需的相机分配临时的RenderTexture
  2. 使用RenderTexture.active = *temporary render texture*使当前活动的rendertexture等于您刚刚创建的临时文本
  3. 使用ReadPixels使用适当的texture2d将像素读入临时Rect。这将从当前有效的RenderTexture
  4. 中读取
  5. 致电Apply()
  6. 上的texture2d
  7. RenderTexture.active和相机RenderTexture设置为null
  8. 我们的想法是ReadPixels适用于当前的Active RenderTexture。

    代码看起来像这样:

        outputCam.targetTexture = outputCamRenderTexture;
        RenderTexture.active = outputCamRenderTexture;
        outputCam.Render ();
        tempResidualTex.ReadPixels (screenRect, 0, 0);
        tempResidualTex.Apply ();
    
        RenderTexture.active = null;
        outputCam.targetTexture = null;