У меня есть проект на моногамной платформе. Целью проекта является расчет коэффициента обзора геометрии, введенного в платформу, с использованием метода ortographi c. На уровне базового c я поставил кубический элемент c и камеру напротив куба. Здесь, когда я смотрю в куб через камеру, мне необходимо подсчитать количество пикселей объекта, видимого в перспективе методом ortographi c. У меня уже есть решение, но оно очень медленное. В моем решении я считаю количество пикселей определенного цвета, а затем делю это число на общее количество пикселей на экране. Я слышал о технике, которая включает использование OcclusionQuery. Но я полагаю, что мне нужно заняться программированием шейдеров, чтобы использовать эту технику, о которой я понятия не имею. Ребята, можете ли вы дать несколько советов, если есть другой метод, который легче реализовать и работает быстрее, чем тот, который я недавно делал, или объяснить, как работает этот OcclusionQuery. Здесь, например, я считаю общее количество серых пикселей, а затем делю его на общий экран площадь
здесь вы можете найти мой код, написанный ниже;
private void CalculateViewFactor(Color[] data)
{
int objectPixelCount = 0;
var color = new Color();
color.R = data[0].R;
color.G = data[0].G;
color.B = data[0].B;
foreach (Color item in data)
if (item.R != color.R && item.G != color.G && item.B != color.B)
objectPixelCount++;
Console.WriteLine(objectPixelCount);
Console.WriteLine(data.Length);
Console.WriteLine( (float) objectPixelCount / data.Length);
}
из-за того, что цвет первого пикселя экрана также является цветом фона, я беру значения RGB первого пикселя и сравнивают эти значения RGB со всеми остальными пикселями на экране и подсчитывают количество пикселей, цвет которых отличается от первого пикселя. Но так как я знаю, что этот метод довольно медленный, я хочу адаптировать OcclusionQuery в своем коде. Если бы вы могли мне помочь, я был бы признателен.