Voglio scrivere un programma di screencasting per la piattaforma Windows, ma non sono sicuro di come catturare lo schermo. L'unico metodo di cui sono a conoscenza è utilizzare GDI, ma sono curioso di sapere se ci sono altri modi per farlo e, se ce ne sono, che comporta il minimo overhead? La velocità è una priorità.
Il programma di screencasting sarà per la registrazione di filmati di gioco, anche se, se questo restringe le opzioni, sono ancora aperto per qualsiasi altro suggerimento che esca da questo ambito. La conoscenza non è male, dopo tutto.
Modifica : mi sono imbattuto in questo articolo: vari metodi per catturare lo schermo . Mi ha fatto conoscere il modo di farlo dell'API di Windows Media e il modo di farlo con DirectX. Cita la conclusione che disabilitare l'accelerazione hardware potrebbe migliorare drasticamente le prestazioni dell'applicazione di acquisizione. Sono curioso di sapere perché. Qualcuno potrebbe riempire gli spazi vuoti mancanti per me?
Modifica : ho letto che i programmi di screencasting come Camtasia usano il proprio driver di acquisizione. Qualcuno potrebbe darmi una spiegazione approfondita su come funziona e perché è più veloce? Potrei anche aver bisogno di una guida per l'implementazione di qualcosa del genere, ma sono sicuro che ci sia comunque documentazione esistente.
Inoltre, ora so come FRAPS registra lo schermo. Aggancia l'API grafica sottostante per leggere dal back buffer. Da quello che ho capito, questo è più veloce della lettura dal buffer anteriore, perché stai leggendo dalla RAM di sistema, piuttosto che dalla RAM video. Puoi leggere l'articolo qui .
MovePlayerLeft()
. Inoltre, registri l'ora e la durata della pressione dei tasti e di altri input. Quindi, quando sei in modalità riproduzione, semplicemente ignori l'ingresso e leggi invece i dati registrati. Se, nei dati, vedi premere un tasto sinistro, chiami MovePlayerLeft()
.