Похоже, что GL стал господствующей тенденцией для всех играющих платформ (даже карманный компьютер!) Это продвинуло развертывание современных чипсетов GPU к большим количествам потребителей.
Это удивительно.
С современными системами GPU там теперь, действительно ли возможно сделать универсальное олдскульное программирование графики (иначе - блитируют от X, реагируют на Y, реагируют с помощью VRAM)? (Думайте Amiga), Или операции центрируются вокруг вершинных и пиксельных шейдеров?
Действительно ли это доступно от GL? OpenGL ES?
Рендеринг текстурированной четверки в порядке, но он потребовал бы двойной буферизации и перерендеринга всей сцены. Видел, мог ли я избежать этого.
Проверка подпрограммы BlitFramebuffer ( Объект Framebuffer ). Вам нужен обновленный драйвер.
Имейте в виду, что пока вы можете использовать фреймбуфер по умолчанию, но я думаю, что будет более забавно использовать объекты фреймбуфера.
Храните ваш спрайт в отдельных фреймбуферах (может быть, рендеринг с использованием OpenGL), установите их как прочитанные (используя glReadBuffers) и скопируйте их в фреймбуфер отрисовки (используя glDrawBuffers). Это довольно просто и быстро.
В некоторых встроенных системах возможно получить указатель фреймбуфера и записать в него напрямую, но в наши дни лучше использовать OpenGL | ES и визуализировать текстуру. Он будет более портативным и, вероятно, быстрее.
Вы можете создать буфер в основной памяти, делать все, что хотите, а затем визуализировать его как текстуру. Вы можете DMA своих данных текстуры во VRAM для скорости, а затем отрендерить их в четырехугольнике, что эквивалентно блит, но не использует циклы процессора и работает так быстро, как может обрабатывать графический процессор.
Удивительно, что сегодня можно делать с шейдерами и программируемыми конвейерами.
Если вы рисуете текстурированные квадраты, с помощью которых вы можете легко имитировать блиттинг «старой школы», то действительно, пиксели копируются из видеопамяти графическим процессором. Также обратите внимание, что хотя операции с растровыми изображениями возможны в OpenGL, они могут быть очень медленными, потому что 3D-путь оптимизирован на видеокартах потребительского уровня, тогда как 2D-пути могут быть не такими.
Что ж, вы можете использовать libSDL и получить указатель на экранный буфер кадра и делать с пикселями все, что захотите. Или вы можете делайте все свои рисунки в буфере памяти, загружайте в текстуру GL и рисуйте текстурированные квадраты, что, вероятно, быстрее из-за аппаратного ускорения.
Кроме того, glCopyPixels, похоже, помогает, если вы правильно настроили окружение.