Framebuffer auslesen
-
Hi,
Ich möchte ein Funktion schreiben, die ein Screenshoot eines anderen DirectX-Programms macht. Ich weiß, dass es solche Programme bereits gibt, brauche es aber als Bestandteil eines eigenen Programms. So weit, wie ich dass bisher verstanden hab, kann ich mit directx_surface::get_screen_pointer() an den Bildspeicher gelangen. Das funktioniert bei mir aber nicht. Kann es sein, das ich damit nur auf den Bildspeicher des selbstgeschrieben Programms kommen kann. Wenn ja, wie kann ich dann den Bildspeicher eines anderen parallel laufenden DirectX Programms auslesen. Habe auch die OpenGL-Funktion glReadPixels gefunden. Da ich aber noch nie was mit OpenGL gemacht habe, bisher noch nicht ausprobiert. Kann mir wer sagen, ob es vielleicht damit möglich wär?
danke
-
Surface locken
Speicher auslesen
Surface entlocken
-
etwa so:
unsigned char *screen; screen = (unsigned char *) surface.get_screen_pointer(); value=screen[X];so würd ich locken und auslesen.
Wie funktioniert das entlocken denn?
-
Öhm, ich weiß nich, was du benutzt, das ist kein reines DirectX.
Bei DirectDraw geht es so ( bei DirectGraphics ähnlich ) :http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/ddraw7/directdraw7/ddref_75pz.asp
-
Aber würd ich bei der Methode nicht ein DDERR_SURFACEBUSY erhalten