diff options
author | Patrick Rudolph <siro@das-labor.org> | 2016-09-04 17:15:16 +0200 |
---|---|---|
committer | Jose Fonseca <jfonseca@vmware.com> | 2016-09-21 11:48:49 +0100 |
commit | 9420288ff8d0f4f4af722937e1d74e7fb3b9be6a (patch) | |
tree | d8c3659951dfa42d24e0bef3918536e27bcc8aae | |
parent | 45ec91c39a85aaf3af5a324e7c03e6e05efcd679 (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.cpp | 52 |
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(); } |