2008-11-17 21 views
1

J'écris un 2d lib qui aura l'accélération 3d mais je voudrais le faire d'une manière qu'il fonctionnera efficacement sur le vieux HW. Peut-être typedefs pour cacher les options/fonctions que votre mode ciblé ne supporte pas. (il peut aussi y avoir une fonction d'émulation activée)gpu, le vieux matériel, l'accélération 3d et un lib

Quelles sont les choses les plus anciennes de HW? voici une liste de questions et de choses que je connais.

  • Tiles, ceci ne sera pas pris en charge. Son à l'ancienne, ma bibliothèque prendra en charge l'accès aux pixels
  • Tampon à pixel unique avec défilement. Exemple GBA
  • surface multiple avec surface à surface BLT rapide (pas extensible)
  • de surface multiples avec une surface à BLT rapide avec étirement (peut-être cela a été émulé? Ne une image étirer HW pour vous?)
  • pixel HW remplir (je pensais avoir vu l'option en DX)
  • HW couleur transparente? (couleur qui est transparente, pensé que j'ai vu dans les spécifications DX)
  • Textures, l'utilisation des anciens pour être une puissance de 2. La largeur ne doit pas être la même puissance de 2 que la hauteur? (Exemple 64x256), qui fait l'un entre eux ont besoin d'être les mêmes
  • Textures, nouvelle HW peut les avoir une largeur et la hauteur (ou est-ce un mensonge?)
  • Les textures peuvent être dans des formats fous (ARVB 8888, ABGR 8888 , ABGR 2 10 10 10)

De plus, je ne peux pas faire de texture à texture blit? comme dans la copie 60x40 de la texture A à B dans HW? Les textures peuvent elles aussi être dans la palette? (Je ne soutiendrai pas ceci) et finalement je devrais garder à l'esprit au sujet des shaders 8)

Que manque-je d'autre?

Répondre

2

De quelle accélération 3D faites-vous référence? S'il est matériel compatible OpenGL:

  • Textures doivent être puissance de 2, la largeur et la hauteur peuvent avoir un pouvoir arbitraire de deux.
  • Textures sans pouvoir de 2 contrainte sont activées avec une extension openGL que vous pouvez tester pour (et est présent sur la quasi-totalité nouveau matériel).
  • Différents formats de texture sont normalisés dans OpenGL, je ne sais pas les extensions à ont des formats de texture arbitraires.

A propos 2D:

  • accélération 2D matérielle prend en charge normale blitting, mais pas d'étirement. L'étirement est disponible en tant qu'accélération vidéo. Par exemple, dans X11, vous pouvez utiliser l'extension xv pour obtenir un étirement accéléré, mais uniquement dans l'espace colorimétrique YUV.
  • Pour des opérations de dessin d'image très rapides, consultez Imlib2. Il fait tout dans les logiciels, mais très rapidement. Peut-être la bonne façon de procéder si l'accélération matérielle 3D n'est pas disponible. L'accélération 2D est différente en performance, et par exemple l'accélération X11 RENDER est souvent battue par Imlib2.http://docs.enlightenment.org/api/imlib2/html/

Un projet intéressant pour vous de regarder pourrait aussi être DirectFB, qui tente d'utiliser fortement l'accélération matérielle 2D: http://www.directfb.org/