i am writing a 2d lib which will have 3d acceleration but i'd like to do it in a way that it will efficiently run on older HW. Possibly typedefs to hide options/functions that your targeted mode does not support. (also there may be emulation func turned on)
What are some of the things older HW do? here is a list of questions and things i know of.
- Tiles, this will be unsupported. Its to old, my lib will support pixel access
- Single pixel buffer with scrolling. Example GBA
- multiple surface with surface to surface quick blt (no stretch)
- multiple surface with surface to surface quick blt with stretch (maybe this was emulated? does any HW stretch images for you?)
- HW pixel fill (i thought i saw the option in DX)
- HW transparent colour? (colour which is transparent, thought i seen in DX specs)
- Textures, older use to be a power of 2. The width does not have to be the same power of 2 as height? (example 64x256), does any require them to be the same
- Textures, newer HW can have them any width and height (or is this a lie?)
- Textures can be in crazy formats (ARGB 8888, ABGR 8888, ABGR 2 10 10 10)
Also, i cannot do a texture to texture blit? as in copy 60x40 from texture A to B in HW ? Also can textures be in palette? (i wont support this) and finally i should keep in mind about shaders 8)
What else am i missing?