GPU, старое железо, 3D-ускорение и библиотека

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

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

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

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

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


person Community    schedule 17.11.2008    source источник


Ответы (1)


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

  • Текстуры должны иметь степень двойки, ширина и высота могут иметь произвольную степень двойки.
  • Текстуры без ограничения степени 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/

person ypnos    schedule 17.11.2008