Прокрутка 2D Engine на OpenGL через аппаратное обеспечение?

Я использую OpenGL в качестве основы для движка 2D-тайлинга. Когда все в 2D, оптимизировать определенные вопросы несложно. Например, прокрутка. Если я знаю, что какая-то часть экрана должна прокручиваться снизу, я могу просто прокрутить эту часть. Я вечером двигаюсь более чем на 1 пиксель за раз. Без явной аппаратной поддержки (вспомните старый nintendo hw) для этого требуется много операций записи пикселей. Битблт на чипе был бы следующей лучшей вещью.

По сути, я смотрю, как я могу оптимизировать свои вызовы GL, чтобы использовать рендеринг текстур VRAM в качестве эффективных аппаратных блитов.

Возможно ли, чтобы GL прокручивал буфер кадра, или я должен просто смириться с двойной буферизацией и повторным рендерингом всей сцены для каждого кадра?

Спасибо


person drudru    schedule 28.02.2010    source источник


Ответы (1)


Я не понимаю, как вы, по крайней мере, обойдетесь, выполняя полноэкранный рендеринг прямоугольника с текстурой в каждом кадре (когда он на самом деле прокручивается). Я уже давно не видел возможности перемещать указатель буфера кадра на видеокартах.

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

person Jose    schedule 17.03.2010