¿Qué bibliotecas y herramientas están disponibles en Windows y Linux?
SDL, OpenGL y Qt 4 (es biblioteca de interfaz gráfica de usuario, pero es lo suficientemente rápido/flexible para la representación 2D)
Será este mismo método de programación siguen siendo válidas o tengo que tener una diferente comprensión de la abstracción de hardware de video?
Normalmente no se escriben datos en la superficie "usando punteros" en cada cuadro, sino que se manipulan/dibujan utilizando los métodos proporcionados por la API. Esto se debe a que el controlador funcionará más rápido con la memoria de video que si transfiere datos de la memoria del sistema a la memoria de video en cada cuadro. Todavía puede escribir datos en la superficie/textura del hardware (incluso durante cada cuadro), si es necesario, pero esas superficies pueden necesitar un tratamiento especial para obtener un rendimiento óptimo. Por ejemplo, en DirectX necesitaría decirle al controlador que los datos de superficie van a cambiar con frecuencia y que solo va a escribir datos en la superficie y nunca volverá a leerlos. Además, en las API orientadas a 3D (OpenGL/DirectX), la superficie de representación en la otra superficie es un caso "especial", y es posible que necesite utilizar "Renderizar destinos" (DirectX) o "Objetos de framebuffer" (OpenGL). Lo cual es diferente de DirectDraw (donde, AFAIK, puedes cambiar cualquier cosa por algo). Lo bueno es que con 3D api obtienes una forma increíblemente flexible de manejar las superficies/texturas (estirarlas, rotarlas, teñirlas de color, mezclarlas, procesarlas usando sombreadores) en el hardware.
Otra cosa es que las aplicaciones 3D modernas con soporte de hardware con frecuencia no funcionan en texturas de 8 bits en palés, y prefieren imágenes ARGB. Las superficies de 8 bits con paleta se pueden emular, cuando sea necesario, y las apis 2D de nivel bajo (SDL, DirectDraw) las proporcionan. También puede emular texturas de 8 bits en hardware utilizando sombreadores de fragmentos/píxeles.
De todos modos, si quiere una forma de uso de superficies "cruzada" de la vieja escuela (es decir, "escriba datos en cada cuadro mediante punteros", es decir, necesita un procesador de software o algo), SDL lo permite fácilmente. Si desea operaciones de mayor nivel y más flexibles, Qt 4 y OpenGL son para usted.
OpenGL es la respuesta inmediata más obvia. Es potente con una curva de aprendizaje baja para aplicaciones simples. – Akusete