source: GTP/trunk/App/Demos/Geom/Shark3D/src/drv_d3d9_state.cpp @ 2236

Revision 2236, 4.2 KB checked in by gumbau, 17 years ago (diff)
Line 
1///////////////////////////////////////////////////////////////////////////////
2//
3//      ##  ######
4//       ######  ###
5//  ## ###############        Shark 3D Engine (www.shark3d.com)
6//   ########## # # #
7//    ########                Copyright (c) 1996-2006 Spinor GmbH.
8//   ######### # # #          All rights reserved.
9//  ##   ##########
10//      ##
11//
12///////////////////////////////////////////////////////////////////////////////
13
14#include "drv_d3d9_state.h"
15#include "drv_d3d9_util.h"
16#include "drv_d3d9_mmx.h"
17#include "sys/core/sys_float.h"
18
19///////////////////////////////////////////////////////////////////////////////
20
21s3d_CDrvD3d9StateMgr::s3d_CDrvD3d9StateMgr()
22{
23    m_Env = 0;
24    Invalidate();
25}
26
27void s3d_CDrvD3d9StateMgr::Invalidate()
28{
29    m_StateBlk.m_CullMode = -1;
30    m_StateBlk.m_DepthTestMode = -1;
31    m_StateBlk.m_DepthWrite = FALSE;
32    m_StateBlk.m_DepthBias = -1;
33    m_StateBlk.m_SlopeScaleDepthBias = -1;
34    m_StateBlk.m_PaintMode = -1;
35
36    m_StateBlk.m_AlphaBlendEnabled = -1;
37    m_StateBlk.m_SrcBlend = -1;
38    m_StateBlk.m_DestBlend = -1;
39    m_StateBlk.m_BlendOp = -1;
40    m_StateBlk.m_SeparateAlphaBlendEnabled = -1;
41    m_StateBlk.m_SrcBlendAlpha = -1;
42    m_StateBlk.m_DestBlendAlpha = -1;
43    m_StateBlk.m_BlendOpAlpha = -1;
44
45    m_StateBlk.m_AlphaTestEnabled = -1;
46    m_StateBlk.m_AlphaTestMode = -1;
47    m_StateBlk.m_AlphaTestRef = -1;
48
49    m_StateBlk.m_ColorWriteEnabled = 0;
50
51    m_StateBlk.m_StencilEnabled = -1;
52    m_StateBlk.m_StencilTestModeFront = -1;
53    m_StateBlk.m_StencilTestRef = -1;
54    m_StateBlk.m_StencilTestMask = -1;
55    m_StateBlk.m_StencilWriteMask = -1;
56    m_StateBlk.m_StencilOpFailFront = -1;
57    m_StateBlk.m_StencilOpDepthFailFront = -1;
58    m_StateBlk.m_StencilOpDepthPassFront = -1;
59    m_StateBlk.m_StencilTwoSidedEnabled = -1;
60    m_StateBlk.m_StencilTestModeBack = -1;
61    m_StateBlk.m_StencilOpFailBack = -1;
62    m_StateBlk.m_StencilOpDepthFailBack = -1;
63    m_StateBlk.m_StencilOpDepthPassBack = -1;
64    m_StateBlk.m_FogDensity = -1.f;
65    m_StateBlk.m_FogColor = -1;
66}
67
68void s3d_CDrvD3d9StateMgr::Apply(
69        s3d_CDrvD3d9StateBlk_cr StateBlk)
70{
71#ifdef S3D_DRV_D3D9_STATEMGR_APPLYBLOCK
72    SetCullMode(StateBlk.m_CullMode);
73   
74    SetDepthTestMode(StateBlk.m_DepthTestMode);
75    SetDepthWrite(StateBlk.m_DepthWrite);
76   
77    SetPaintMode(StateBlk.m_PaintMode);
78
79    SetAlphaBlendEnabled(StateBlk.m_AlphaBlendEnabled);
80    SetSrcBlend(StateBlk.m_SrcBlend);
81    SetDestBlend(StateBlk.m_DestBlend);
82    SetBlendOp(StateBlk.m_BlendOp);
83    SetSeparateAlphaBlendEnabled(StateBlk.m_SeparateAlphaBlendEnabled);
84    SetSrcBlendAlpha(StateBlk.m_SrcBlendAlpha);
85    SetDestBlendAlpha(StateBlk.m_DestBlendAlpha);
86    SetBlendOpAlpha(StateBlk.m_BlendOpAlpha);
87
88    SetAlphaTestEnabled(StateBlk.m_AlphaTestEnabled);
89    SetAlphaTestMode(StateBlk.m_AlphaTestMode);
90    SetAlphaTestRef(StateBlk.m_AlphaTestRef);
91
92    SetColorWriteEnabled(StateBlk.m_ColorWriteEnabled);
93
94    SetDepthBias(StateBlk.m_DepthBias, m_StateBlk.m_SlopeScaleDepthBias);
95
96    SetStencilEnabled(StateBlk.m_StencilEnabled);
97    SetStencilTwoSidedEnabled(StateBlk.m_StencilTwoSidedEnabled);
98    SetStencilTestModeFront(StateBlk.m_StencilTestModeFront);
99    SetStencilTestModeBack(StateBlk.m_StencilTestModeBack);
100    SetStencilTestRef(StateBlk.m_StencilTestRef);
101    SetStencilTestMask(StateBlk.m_StencilTestMask);
102    SetStencilWriteMask(StateBlk.m_StencilWriteMask);
103    SetStencilOpFailFront(StateBlk.m_StencilOpFailFront);
104    SetStencilOpDepthFailFront(StateBlk.m_StencilOpDepthFailFront);
105    SetStencilOpDepthPassFront(StateBlk.m_StencilOpDepthPassFront);
106    SetStencilOpFailBack(StateBlk.m_StencilOpFailBack);
107    SetStencilOpDepthFailBack(StateBlk.m_StencilOpDepthFailBack);
108    SetStencilOpDepthPassBack(StateBlk.m_StencilOpDepthPassBack);
109
110    SetFogDensity(StateBlk.m_FogDensity);
111    SetFogColor(StateBlk.m_FogColor);
112
113#ifdef S3D_DRV_D3D9_STATEMGR_USE_MEMCPY
114    //s3d_DrvD3d9MemcpyMmx16(
115    //        &m_StateBlk, &StateBlk, S3D_SYS_SIZEOFS(m_StateBlk));
116    memcpy(&m_StateBlk, &StateBlk, S3D_SYS_SIZEOFS(m_StateBlk));
117#endif
118
119#endif //S3D_DRV_D3D9_STATEMGR_APPLYBLOCK
120}
121
122///////////////////////////////////////////////////////////////////////////////
123
Note: See TracBrowser for help on using the repository browser.