Я использую буфер глубины текущего контекста, чтобы влиять на отображаемую текстуру.Текстура 1-мерная и в оттенках серого.Слева направо представляет от ближнего к дальнему.Чем больше пикселей на определенной глубине, тем ярче текстура в этой точке: черный - нет пикселей на этой глубине, а белый - все пиксели на этой глубине.
Теперь у меня есть решение, которое делает glReadPixels()
в буфере глубины анализирует его на процессоре и затем записывает обратно в текстуру.Естественно, это реальное узкое место в приложении.
Я ищу решение для всего графического процессора, где буфер глубины анализируется в шейдере или что-то в этом роде, и обновлять текстуру таким образом.Я думал о создании фрагментного шейдера, который считывает значение глубины и увеличивает его до соответствующего пикселя в текстуре, но для этого потребуется, чтобы фрагментный шейдер мог записывать в другие текстуры.Что-то, чему я научился быть «нет-нет», особенно если они должны записывать в один и тот же пиксель.
Есть ли уловка или методика, которые мне не хватает, или я вынужден задействовать в этом процессор?