C# 获取显示屏幕或纹理的亮度2D-Unity3D

C# 获取显示屏幕或纹理的亮度2D-Unity3D,c#,image,unity3d,brightness,screen-brightness,C#,Image,Unity3d,Brightness,Screen Brightness,在我的项目中,我需要获得正在显示的屏幕的亮度。为了做到这一点,我得到了屏幕的快照,并将其制作为纹理2D 要获取快照并将其转换,我使用以下方法: public void GetScreen(ref Texture2D screenShot){ RenderTexture rt = new RenderTexture(Screen.Width, Screen.Height, 24); camera.targetTexture = rt; screenS

在我的项目中,我需要获得正在显示的屏幕的亮度。为了做到这一点,我得到了屏幕的快照,并将其制作为纹理2D

要获取快照并将其转换,我使用以下方法:

public void GetScreen(ref Texture2D screenShot){
        RenderTexture rt = new RenderTexture(Screen.Width, Screen.Height, 24);
        camera.targetTexture = rt;
        screenShot = new Texture2D(Screen.Width, Screen.Height, TextureFormat.RGB24, false);
        camera.Render();
        RenderTexture.active = rt;
        screenShot.ReadPixels(new Rect(0, 0, Sreen.Width, Screen.Height), 0, 0);
        camera.targetTexture = null;
        RenderTexture.active = null;
        Destroy(rt);
}
但我仍然需要获得亮度。
将接受任何建议(关于亮度和/或转换)。

提前感谢。

获得像素后,下一步是使用“获取图像上的像素”对其中一些像素进行采样,并根据它们构建亮度:

确定亮度是一个有点复杂的问题,因此它实际上取决于您的应用程序。具有确定单个像素亮度的方法。您可以在图像中心对几个像素进行采样,然后取这些像素的平均值

如果需要更复杂的解决方案,可以构建所有像素亮度的直方图,然后找到峰值