Quero escrever um programa de captura de tela para a plataforma Windows, mas não tenho certeza de como capturar a tela. O único método que eu conheço é usar o GDI, mas estou curioso para saber se existem outras maneiras de fazer isso e, se houver, o que implica menos sobrecarga? A velocidade é uma prioridade.
O programa de screencasting será para a gravação de cenas de jogos, embora, se isso restringir as opções, ainda estou aberto a outras sugestões que se enquadram nesse escopo. Afinal, o conhecimento não é ruim.
Edit : Me deparei com este artigo: Vários métodos para capturar a tela . Ele me apresentou a maneira de fazer a API do Windows Media e a maneira de fazer o DirectX. Menciona na conclusão que desabilitar a aceleração de hardware pode melhorar drasticamente o desempenho do aplicativo de captura. Estou curioso para saber por que isso acontece. Alguém poderia preencher os espaços em branco para mim?
Edit : Eu li que programas de screencasting como o Camtasia usam seu próprio driver de captura. Alguém poderia me dar uma explicação detalhada sobre como funciona e por que é mais rápido? Também posso precisar de orientações sobre como implementar algo assim, mas tenho certeza de que existe documentação existente de qualquer maneira.
Além disso, agora eu sei como o FRAPS grava a tela. Ele conecta a API gráfica subjacente para ler a partir do buffer traseiro. Pelo que entendi, isso é mais rápido do que ler no buffer frontal, porque você está lendo na RAM do sistema, em vez da RAM de vídeo. Você pode ler o artigo aqui .
MovePlayerLeft()
. E você também grava a hora e a duração das teclas pressionadas e outras entradas. Então, quando você está no modo de reprodução, simplesmente ignora a entrada e lê os dados gravados. Se, nos dados, você pressionar a tecla esquerda, ligue MovePlayerLeft()
.