From 4c4f4cf20c7891d288dba6a6af299a7ae221b506 Mon Sep 17 00:00:00 2001 From: David Rose Date: Sun, 12 Oct 2003 18:51:53 +0000 Subject: [PATCH] support texture matrices --- panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx b/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx index 32473a8a1e..22bc97e0e4 100644 --- a/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx +++ b/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx @@ -3599,7 +3599,23 @@ issue_transform(const TransformState *transform) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian8:: issue_tex_matrix(const TexMatrixAttrib *attrib) { - // Not implemented yet. + const LMatrix4f &m = attrib->get_mat(); + + // This is ugly. Need to make this a simple boolean test instead of + // a matrix compare. + if (m == LMatrix4f::ident_mat()) { + _pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, + D3DTTFF_DISABLE); + } else { + // We have to reorder the elements of the matrix for some reason. + LMatrix4f dm(m(0, 0), m(0, 1), m(0, 3), 0.0f, + m(1, 0), m(1, 1), m(1, 3), 0.0f, + m(3, 0), m(3, 1), m(3, 3), 0.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + _pD3DDevice->SetTransform(D3DTS_TEXTURE0, (D3DMATRIX *)dm.get_data()); + _pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, + D3DTTFF_COUNT2); + } } ////////////////////////////////////////////////////////////////////