Подтвердить что ты не робот

Можно ли использовать старую школу 2d на современном графическом процессоре?

Похоже, GL стал основным для всех игровых платформ (даже карманных!) Это подтолкнуло развертывание современных чипсетов GPU к большому числу потребителей.

Это потрясающе.

В современных современных графических процессорах возможно создание универсальной графики старой школы программирование (aka - blit от X rect to Y rect с помощью VRAM)? (Think Amiga) Или сосредоточены операции вокруг вершинных и пиксельных шейдеров?

Доступно ли это из GL? OpenGL ES?

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

4b9b3361

Ответ 1

Проверьте процедуру BlitFramebuffer (Объект Framebuffer). Вам нужен обновленный драйвер.

Помните, что вы можете использовать фреймбуфер по умолчанию, но я думаю, что будет более забавно использовать объекты framebuffer.

Сохраняйте свой спрайт в отдельных фреймбуферах (возможно, с помощью OpenGL) и задайте их как прочитанные (используя glReadBuffers) и разбросайте их по буфере кадров рисования (используя glDrawBuffers). Это довольно просто и быстро.

Ответ 2

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

Ответ 3

В некоторых встроенных системах может быть возможно получить указатель на фреймбуфер и написать его напрямую, но в эти дни вам лучше использовать OpenGL | ES и визуализировать текстуру. Он будет более портативным и, вероятно, быстрее.

Вы можете создать буфер в основной памяти, сделать все бит, который вы хотите, а затем визуализировать как текстуру. Вы можете DMA ваши данные текстуры в VRAM для скорости, а затем визуализировать его в четырехъядерном процессоре, что эквивалентно блиту, но не использует циклы процессора и работает так же быстро, как GPU может обрабатывать.

Удивительно, что вы можете делать с шейдерами и программируемыми конвейерами в наши дни.

Ответ 4

Если вы рисуете текстурированные квадрациклы, с помощью которых вы можете легко имитировать "старую школу", то пиксели будут копироваться из видеопамяти с помощью графического процессора. Также обратите внимание, что, хотя операции растрового изображения возможны в OpenGL, они могут быть мучительно медленными, потому что 3D-путь оптимизирован на видеокартах потребительского класса, тогда как 2D-пути могут не быть.

Ответ 5

Кроме того, glCopyPixels, похоже, делает трюк, если вы правильно настроили среду.

Ответ 6

В Windows вы можете использовать низкоуровневые функции копирования растровых изображений, которые точно соответствуют старому описанию без каких-либо OpenGL и т.д.

BOOL BitBlt(
  _In_ HDC   hdcDest,
  _In_ int   nXDest,
  _In_ int   nYDest,
  _In_ int   nWidth,
  _In_ int   nHeight,
  _In_ HDC   hdcSrc,
  _In_ int   nXSrc,
  _In_ int   nYSrc,
  _In_ DWORD dwRop
);

https://msdn.microsoft.com/en-us/library/dd183370%28v=vs.85%29.aspx