]> git.cworth.org Git - apitrace/blobdiff - retrace/d3dretrace_main.cpp
specs: Allow an API to spread across multiple modules.
[apitrace] / retrace / d3dretrace_main.cpp
index e4a8986d925f60bdd898f8bdc0bf621eafc0ad89..a19511a0439e29f8df336c94a36a138faa79411d 100644 (file)
 #include <string.h>
 
 #include "os_string.hpp"
+
+#include "d3d9state.hpp"
 #include "retrace.hpp"
 #include "d3dretrace.hpp"
 
 
+IDirect3DDevice9 *
+d3dretrace::pLastDirect3DDevice9 = NULL;
+
+
 void
 retrace::setUp(void) {
 }
@@ -39,20 +45,30 @@ retrace::setUp(void) {
 void
 retrace::addCallbacks(retrace::Retracer &retracer)
 {
-    retracer.addCallbacks(d3dretrace::d3d9_callbacks);
+    retracer.addCallbacks(d3dretrace::d3d_callbacks);
 }
 
 
 image::Image *
 retrace::getSnapshot(void) {
-    return NULL;
+    if (!d3dretrace::pLastDirect3DDevice9) {
+        return NULL;
+    }
+
+    return d3dstate::getRenderTargetImage(d3dretrace::pLastDirect3DDevice9);
 }
 
 
 bool
 retrace::dumpState(std::ostream &os)
 {
-    return false;
+    if (!d3dretrace::pLastDirect3DDevice9) {
+        return false;
+    }
+
+    d3dstate::dumpDevice(os, d3dretrace::pLastDirect3DDevice9);
+
+    return true;
 }
 
 
@@ -62,6 +78,7 @@ retrace::flushRendering(void) {
 
 void
 retrace::waitForInput(void) {
+    /* TODO */
 }
 
 void