Chcę napisać program do wyświetlania ekranu dla platformy Windows, ale nie jestem pewien, jak zrobić zrzut ekranu. Jedyną metodą, o której wiem, jest użycie GDI, ale jestem ciekawy, czy istnieją inne sposoby, aby to zrobić, a jeśli tak, to który generuje najmniejsze koszty? Szybkość jest priorytetem.
Program do wyświetlania ekranu będzie służył do nagrywania materiału z gry, chociaż jeśli to zawęzi opcje, nadal jestem otwarty na wszelkie inne sugestie, które wykraczają poza ten zakres. W końcu wiedza nie jest zła.
Edycja : natknąłem się na ten artykuł: Różne metody przechwytywania ekranu . Wprowadził mnie w sposób robienia tego w Windows Media API i DirectX. We wniosku wspomniano, że wyłączenie akceleracji sprzętowej może drastycznie poprawić wydajność aplikacji przechwytującej. Ciekaw jestem, dlaczego tak jest. Czy ktoś mógłby wypełnić dla mnie brakujące pola?
Edycja : Czytałem, że programy do wyświetlania ekranu, takie jak Camtasia, używają własnego sterownika przechwytywania. Czy ktoś mógłby mi szczegółowo wyjaśnić, jak to działa i dlaczego jest szybsze? Mogę też potrzebować wskazówek dotyczących implementacji czegoś takiego, ale jestem pewien, że i tak istnieje dokumentacja.
Poza tym wiem teraz, jak FRAPS nagrywa ekran. Przechwytuje podstawowy interfejs API grafiki w celu odczytu z bufora tylnego. Z tego, co rozumiem, jest to szybsze niż odczyt z przedniego bufora, ponieważ czytasz z systemowej pamięci RAM, a nie z pamięci RAM wideo. Możesz przeczytać artykuł tutaj .
MovePlayerLeft()
. Ponadto rejestrujesz czas i czas trwania naciśnięć klawiszy i innych danych wejściowych. Następnie, gdy jesteś w trybie odtwarzania, po prostu ignorujesz dane wejściowe i zamiast tego odczytujesz zapisane dane. Jeśli w danych widać naciśnięcie lewego klawisza, dzwonisz MovePlayerLeft()
.