Быстрое переселение текселей в OpenGL - PullRequest
0 голосов
/ 24 января 2011

Мне нужно визуализировать карту влияния в OpenGL. В настоящее время у меня есть рендеринг квадратов 100 x 100 с заданным цветом для представления влияния в каждой точке на карте. Мне было рекомендовано изменить метод рендеринга на один квад с текстурой, а затем позволить конвейеру рендеринга набрать скорость.

Базовое тестирование показало, что glTexSubImage2D слишком медленный для установки 10000 текселей на кадр. У вас есть какие-нибудь предложения? Будет ли лучше создавать совершенно новую текстуру для каждого кадра? Моя карта влияния находится в нормализованных поплавках (от 0,0 до 1,0) и преобразуется в оттенки серого (1,0f = белый).

Спасибо: D

1 Ответ

2 голосов
/ 24 января 2011

Обновляете ли вы в настоящее время каждый из 10000 текселей отдельно, с помощью 10000 вызовов glTexSubImage2D?

Просто используйте одну текстуру с плавающей точкой в ​​оттенках серого 100x100 (массив из 10000 чисел с плавающей запятой) в оперативной памяти, обновите значения непосредственно до нее и затем отправьте все данные в графический процессор с помощью одного вызова glTexImage2D. Вы также можете использовать буферные объекты, чтобы передача происходила в фоновом режиме, но в этом нет необходимости, поскольку вы не перемещаете очень большие объемы данных.

...