Unity现在支持多个显示输出(最多8个)。
使用ReadPixels
功能,您可以指定要读取的区域和原点坐标。但我不能指定显示号码来执行读取操作。
我需要能够从特定显示(1-8)读取具有特定区域和原点的像素。
我该怎么办呢?
答案 0 :(得分:0)
您可以为特定屏幕/显示实现ReadPixels。您必须执行以下操作:
在开始之前,我假设您有许多相机,每个相机都渲染到不同的显示器。相机不得附加RenderTexture以输出到显示器。
定义一个执行以下操作的函数:
RenderTexture.active = *temporary render texture*
使当前活动的rendertexture等于您刚刚创建的临时文本ReadPixels
使用适当的texture2d
将像素读入临时Rect
。这将从当前有效的RenderTexture
Apply()
texture2d
RenderTexture.active
和相机RenderTexture
设置为null
我们的想法是ReadPixels适用于当前的Active RenderTexture。
代码看起来像这样:
outputCam.targetTexture = outputCamRenderTexture;
RenderTexture.active = outputCamRenderTexture;
outputCam.Render ();
tempResidualTex.ReadPixels (screenRect, 0, 0);
tempResidualTex.Apply ();
RenderTexture.active = null;
outputCam.targetTexture = null;