GPU, старое оборудование, 3D-ускорение и библиотека - PullRequest
1 голос
/ 18 ноября 2008

Я пишу 2d-библиотеку, которая будет иметь 3D-ускорение, но я бы хотел сделать это так, чтобы она эффективно работала на старых HW. Возможно, введитеdefs, чтобы скрыть опции / функции, которые не поддерживает целевой режим. (также может быть включена функция эмуляции)

Что делают старшие школьники? вот список вопросов и вещей, которые я знаю.

  • Tiles, это не поддерживается. Это к старому, моя библиотека будет поддерживать пиксельный доступ
  • Однопиксельный буфер с прокруткой. Пример GBA
  • многократная поверхность с поверхностным всплеском (без растяжения)
  • множественная поверхность с поверхности на поверхность, быстрый всплеск с растяжением (может быть, это было эмулировано? Есть ли у вас HW растягивание изображений?)
  • HW пиксельная заливка (я думал, что видел вариант в DX)
  • HW прозрачного цвета? (прозрачный цвет, я думал, что я видел в спецификации DX)
  • Текстуры, старшее использование, чтобы быть степенью 2. Ширина не должна быть такой же степени 2, как высота? (пример 64x256), требует ли кто-нибудь, чтобы они были одинаковыми
  • Текстуры, новые HW могут иметь любую ширину и высоту (или это ложь?)
  • Текстуры могут быть в сумасшедших форматах (ARGB 8888, ABGR 8888, ABGR 2 10 10 10)

Кроме того, я не могу сделать текстуру для текстуры Blit? как в копии 60х40 из текстуры от А до Б в HW? Также текстуры могут быть в палитре? (я не буду поддерживать это) и, наконец, я должен помнить о шейдерах 8)

Что еще мне не хватает?

1 Ответ

2 голосов
/ 18 ноября 2008

Какое 3D ускорение вы имеете в виду? Если это совместимое с OpenGL оборудование:

  • Текстуры должны быть степенью 2, ширина и высота могут быть произвольными сила двух.
  • Текстуры без силы 2 ограничения включены с расширение openGL, которое вы можете протестировать для (и присутствует почти на всех новое оборудование).
  • Несколько разных форматы текстур стандартизированы в OpenGL, я не знаю расширений имеют произвольные форматы текстур.

О 2D:

  • Нормальное аппаратное 2D ускорение поддерживает блиттинг, но не растяжение. Растяжение доступно как «видео ускорение». Например, в X11 вы можете использовать расширение xv для ускоренного растяжения, но только в цветовом пространстве YUV.
  • Для действительно быстрых операций рисования изображений, проверьте Imlib2. Все это делается программно, но невероятно быстро. Возможно, правильный путь, если аппаратное ускорение 3D недоступно. 2D hw ускорение отличается по производительности, и, например, ускорение X11 RENDER часто побеждает Imlib2. http://docs.enlightenment.org/api/imlib2/html/

Интересным проектом для вас может быть также DirectFB, который пытается интенсивно использовать HW 2D ускорение: http://www.directfb.org/

...