summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Rudolph <siro@das-labor.org>2016-09-04 17:15:16 +0200
committerJose Fonseca <jfonseca@vmware.com>2016-09-21 11:48:49 +0100
commit9420288ff8d0f4f4af722937e1d74e7fb3b9be6a (patch)
treed8c3659951dfa42d24e0bef3918536e27bcc8aae
parent45ec91c39a85aaf3af5a324e7c03e6e05efcd679 (diff)
d3dretrace: Dump d3d9 texture states
Dump all texturestagestates. Use seperate a seperate field for each stage. Signed-off-by: Patrick Rudolph <siro@das-labor.org>
-rw-r--r--retrace/d3d9state.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/retrace/d3d9state.cpp b/retrace/d3d9state.cpp
index 05f85afa..36144d39 100644
--- a/retrace/d3d9state.cpp
+++ b/retrace/d3d9state.cpp
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <iostream>
+#include <sstream>
#include "state_writer.hpp"
#include "com_ptr.hpp"
@@ -95,6 +96,55 @@ dumpShaders(StateWriter &writer, IDirect3DDevice9 *pDevice)
}
static void
+dumpTextureStates(StateWriter &writer, IDirect3DDevice9 *pDevice)
+{
+#define _DUMP_TS_INT(x) { \
+ DWORD rsDword = 0; \
+ pDevice->GetTextureStageState(i, x, &rsDword); \
+ writer.writeIntMember(#x, rsDword); \
+}
+
+#define _DUMP_TS_FLOAT(x) { \
+ float rsFloat = 0.0f; \
+ pDevice->GetTextureStageState(i, x, (DWORD *)&rsFloat); \
+ writer.writeFloatMember(#x, rsFloat); \
+}
+
+ for (int i = 0; i < 8; i++)
+ {
+ std::ostringstream oss;
+ oss << "TextureStageState" << i;
+ writer.beginMember(oss.str());
+ writer.beginObject();
+
+ _DUMP_TS_INT(D3DTSS_COLOROP);
+ _DUMP_TS_INT(D3DTSS_COLORARG1);
+ _DUMP_TS_INT(D3DTSS_COLORARG2);
+ _DUMP_TS_INT(D3DTSS_ALPHAOP);
+ _DUMP_TS_INT(D3DTSS_ALPHAARG1);
+ _DUMP_TS_INT(D3DTSS_ALPHAARG2);
+ _DUMP_TS_FLOAT(D3DTSS_BUMPENVMAT00);
+ _DUMP_TS_FLOAT(D3DTSS_BUMPENVMAT01);
+ _DUMP_TS_FLOAT(D3DTSS_BUMPENVMAT10);
+ _DUMP_TS_FLOAT(D3DTSS_BUMPENVMAT11);
+ _DUMP_TS_INT(D3DTSS_TEXCOORDINDEX);
+ _DUMP_TS_FLOAT(D3DTSS_BUMPENVLSCALE);
+ _DUMP_TS_FLOAT(D3DTSS_BUMPENVLOFFSET);
+ _DUMP_TS_INT(D3DTSS_TEXTURETRANSFORMFLAGS);
+ _DUMP_TS_INT(D3DTSS_COLORARG0);
+ _DUMP_TS_INT(D3DTSS_ALPHAARG0);
+ _DUMP_TS_INT(D3DTSS_RESULTARG);
+ _DUMP_TS_INT(D3DTSS_CONSTANT);
+
+ writer.endObject();
+ writer.endMember();
+ }
+
+#undef _DUMP_TS_INT
+#undef _DUMP_TS_FLOAT
+}
+
+static void
dumpViewport(StateWriter &writer, IDirect3DDevice9 *pDevice)
{
writer.beginMember("Viewport");
@@ -240,6 +290,8 @@ dumpRenderstate(StateWriter &writer, IDirect3DDevice9 *pDevice)
dumpViewport(writer, pDevice);
+ dumpTextureStates(writer, pDevice);
+
writer.endObject();
writer.endMember();
}