Как эффективно сделать расчетный коэффициент просмотра, который можно увидеть с определенной точки зрения в MonoGame, если эти пиксели имеют определенный цвет - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть проект на моногамной платформе. Целью проекта является расчет коэффициента обзора геометрии, введенного в платформу, с использованием метода ortographi c. На уровне базового c я поставил кубический элемент c и камеру напротив куба. Здесь, когда я смотрю в куб через камеру, мне необходимо подсчитать количество пикселей объекта, видимого в перспективе методом ortographi c. У меня уже есть решение, но оно очень медленное. В моем решении я считаю количество пикселей определенного цвета, а затем делю это число на общее количество пикселей на экране. Я слышал о технике, которая включает использование OcclusionQuery. Но я полагаю, что мне нужно заняться программированием шейдеров, чтобы использовать эту технику, о которой я понятия не имею. Ребята, можете ли вы дать несколько советов, если есть другой метод, который легче внедрить и быстрее, чем тот, который я недавно делал, или объяснить, как работает этот OcclusionQuery. enter image description here

здесь вы можете найти мой код, написанный ниже;

    private void CalculateViewFactor(Color[] data)
    {
        int whitePixelCount = 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)
                whitePixelCount++;

        Console.WriteLine(whitePixelCount);
        Console.WriteLine(data.Length);
        Console.WriteLine( (float) whitePixelCount / data.Length);
    }

из-за того, что цвет первого пикселя экрана также является цветом фона, я беру значения RGB первого пикселя и сравниваю эти значения RGB со всеми другие пиксели на экране и подсчитайте количество пикселей, цвет которых отличается от первого пикселя. Но так как я знаю, что этот метод довольно медленный, я хочу адаптировать OcclusionQuery в своем коде. Если бы вы могли мне помочь, я был бы признателен.

...