Quali librerie e strumenti sono disponibili su Windows e Linux?
SDL, OpenGL, e Qt 4 (è libreria GUI, ma è abbastanza veloce/flessibile per il rendering 2D)
Sarà questo stesso metodo di programmazione si applicano ancora o devo avere una diversa comprensione dell'astrazione dell'hardware video?
Normalmente non si scrivono i dati in superficie "utilizzando i puntatori" ogni fotogramma e invece li si manipola/disegna utilizzando i metodi forniti dall'API. Questo perché il driver funzionerà più velocemente con la memoria video che se trasferisci i dati dalla memoria di sistema alla memoria video ogni fotogramma. È ancora possibile scrivere dati in superficie/trama hardware (anche durante ogni fotogramma), se necessario, ma è possibile che tali superfici debbano essere trattate in modo speciale per ottenere prestazioni ottimali. Ad esempio, in DirectX dovresti dire al conducente che i dati di superficie cambieranno frequentemente e che dovrai solo scrivere i dati in superficie, senza leggerli mai. Inoltre, in 3D-oriented API (openGL/DirectX) la superficie di rendering sull'altra superficie è un po '"caso speciale" e potrebbe essere necessario utilizzare "Render Targets" (DirectX) o "Framebuffer Objects" (OpenGL). Che è diverso da DirectDraw (dove, AFAIK, si può usare qualsiasi cosa su qualsiasi cosa). La cosa buona è che con l'API 3D si ottiene un modo incredibilmente flessibile di trattare superfici/trame - allungando, ruotando, colorandole con il colore, mescolandole insieme, elaborandole usando shader può essere fatto su hardware.
Un'altra cosa è che le moderne apis 3D con supporto hardware spesso non funzionano su trame a 8 bit e preferiscono le immagini ARGB. Le superfici a 8 bit con tavolozza possono essere emulate, se necessario, e forniscono apis 2D a basso livello (SDL, DirectDraw). Inoltre puoi emulare texture a 8 bit su hardware usando shader di frammenti/pixel.
In ogni caso, se si desidera utilizzare la "vecchia scuola" per utilizzare le superfici in modo multipiattaforma (ad esempio "scrivere i dati su ogni fotogramma utilizzando i puntatori" - cioè è necessario un renderer software o qualcosa del genere), SDL lo consente facilmente. Se vuoi operazioni di livello superiore e più flessibili, Qt 4 e OpenGL sono per te.
OpenGL è la risposta immediata più ovvia. È potente con una curva di apprendimento bassa per applicazioni semplici. – Akusete