[2236] | 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 |
|
---|
| 21 | s3d_CDrvD3d9StateMgr::s3d_CDrvD3d9StateMgr()
|
---|
| 22 | {
|
---|
| 23 | m_Env = 0;
|
---|
| 24 | Invalidate();
|
---|
| 25 | }
|
---|
| 26 |
|
---|
| 27 | void 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 |
|
---|
| 68 | void 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 |
|
---|