📄 rstate.h
字号:
/******************************************************************************
<module>
* Name : RState.h
* Title : D3DM Render state data
* Author(s) : Imagination Technologies
* Created : 2 March 2004
*
* Copyright : 2004 by Imagination Technologies Limited.
* All rights reserved. No part of this software, either
* material or conceptual may be copied or distributed,
* transmitted, transcribed, stored in a retrieval system
* or translated into any human or computer language in any
* form by any means, electronic, mechanical, manual or
* other-wise, or disclosed to third parties without the
* express written permission of Imagination Technologies
* Limited, Unit 8, HomePark Industrial Estate,
* King's Langley, Hertfordshire, WD4 8LZ, U.K.
*
* Description : Prototypes and structure definitons for D3DM Render state
interactions
*
* Platform : Windows CE
*
</module>
*********************************************************************************/
#if !defined(_RSTATE_H_)
#define _RSTATE_H_
/********************************************************************************
* D3DM Render State Function prototypes
*********************************************************************************/
VOID D3DM_RS_NOP(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_TexturePerspective(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_FillMode(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_ShadeMode(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_ZEnable(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_ZWriteEnable(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_ZFunc(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_SrcBlend(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_DestBlend(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_AlphaBlendEnable(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_CullMode(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_AlphaRef(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_AlphaFunc(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_AlphaTestEnable(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_LastPixel(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_DitherEnable(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_SpecularEnable(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_FogEnable(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_FogColour(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_FogTableMode(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_FogDensity(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_FogStart(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_FogEnd(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_ZBias(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_SlopeScaledDepthBias(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_RangeFogEnable(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_TextureFactor(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_Wrap(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_Lighting(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_Ambient(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_FogVertexMode(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_ColorVertex(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_LocalViewer(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_NormalizeNormals(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_SetMaterialSource(LPD3DM_CONTEXT psContext, DWORD dwData);
VOID D3DM_RS_Clipping(LPD3DM_CONTEXT psContext, DWORD dwData);
void ProcessLightingColourSources(LPD3DM_CONTEXT psContext);
/* Sets the object-type in the HW ISP/TSP control word */
void SetupObjectType(LPD3DM_CONTEXT psContext);
void SetupViewportTransform(LPD3DM_CONTEXT psContext);
/*******************************************************************************
D3DM Render State function type
********************************************************************************/
/*
Function prototype for D3DM Render state functions.
NB: Render State values defined in D3DMRENDERSTATETYPE enum
are numbered so we can create a jump table directly from
the enumeration
*/
typedef VOID (*D3DM_RSTATE_FUNC)(LPD3DM_CONTEXT, ULONG);
/*******************************************************************************
D3DM Render State Flags
********************************************************************************/
/*
Boolean RenderState flags (for TRANSIENT_STATE::dwRSFlags)
NB: These flags represent the boolean renderstates, where a set bit
indicates a non-FALSE value for the corresponding state.
*/
#define TSTATE_RSFLAGS_ZENABLE 0x00000001
#define TSTATE_RSFLAGS_WENABLE 0x00000002
#define TSTATE_RSFLAGS_ZWRITE 0x00000004
#define TSTATE_RSFLAGS_ALPHABLEND 0x00000008
#define TSTATE_RSFLAGS_ALPHATEST 0x00000010
#define TSTATE_RSFLAGS_CK 0x00000020
#define TSTATE_RSFLAGS_DITHER 0x00000040
#define TSTATE_RSFLAGS_SPECULAR 0x00000080
#define TSTATE_RSFLAGS_FOG 0x00000100
#define TSTATE_RSFLAGS_DEPTHBIAS 0x00000200
#define TSTATE_RSFLAGS_FLAT_SHADING 0x00000400
#define TSTATE_RSFLAGS_LIGHTING 0x00001000
#define TSTATE_RSFLAGS_COLORVERTEX 0x00002000
#define TSTATE_RSFLAGS_LOCALVIEWER 0x00004000
#define TSTATE_RSFLAGS_NORMALIZENORMALS 0x00008000
#define TSTATE_RSFLAGS_CLIPPING 0x00040000
#define TSTATE_RSFLAGS_RANGEFOG 0x00080000///////??????????
#define TSTATE_RSFLAGS_RANGE_FOG 0x00800000///////????????????
/*
Texture-coordinate wrap-enable flags (for SWRASTSTATE::dwWrapFlags)
NB: MBX1 only supports 2D textures, so we need flags for U and V only
*/
#define TSTATE_WRAPFLAGS_WRAPCOORD0 0x1UL
#define TSTATE_WRAPFLAGS_WRAPCOORD1 0x2UL
#define TSTATE_WRAPFLAGS_WRAPMASK 0x3UL
#define TSTATE_WRAPFLAGS_PERCOORD_LSHIFT 1
#define TSTATE_WRAPFLAGS_PERCOORDSET_LSHIFT 2
#define TSTATE_WRAPFLAGS_COORDSET0SHIFT 0
#define TSTATE_WRAPFLAGS_COORDSET0MASK 0x00000003UL
#define TSTATE_COORDSET1SHIFT 2
#define TSTATE_WRAPFLAGS_COORDSET1MASK 0x0000000CUL
/*
Point-sprite related flags (for TRANSIENT_STATE::dwPSFlags)
*/
#define TSTATE_PSFLAGS_ADDUV 0x00000004
/*******************************************************************************
* D3DM General Render state/settings used to track current D3D state and
* generate corresponding HW-specific state
********************************************************************************/
typedef struct _TRANSIENT_STATE_
{
/*
Renderstate-flags representing some of the more frequently accessed
boolean render-state values (see TSTATE_RSFLAGS_xxx for definitions)
*/
DWORD dwRSFlags;
/* The current FVF-code */
DWORD dwFVFCode;
/************************ Rasterisation State **************************/
/*
Current D3D depth-compare function
*/
DWORD dwD3DDepthFunc;
/*
HW-specific alpha-blend control (see MBX1_ISPTSPCTL_SRCBLENDxxx and
MBX1_ISPTSPCTL_DESTBLENDxxx for definitions)
*/
DWORD dwBlendMode;
/*
HW-specific alpha-test control, including compare-mode and reference-value
(see MBX1_TSPOBJ_ALPHAREFxxx and MBX1_TSPOBJ_ACMPMODExxx for definitions)
*/
DWORD dwAlphaTest;
/*
HW-specific depth-compare controls
*/
DWORD dwDepthCtl;
/*
Current D3D fill-mode
*/
DWORD dwD3DfillMode;
/*
Current app depth-bias
*/
NTV_TYPE D3DZBias;
/*
Current slope-scaled depth-bias
*/
NTV_TYPE D3DSSDBias;
/*
Current app depth-bias alculated offset
*/
NTV_TYPE D3DZBiasOffset;
/*
Texture-coordinate wrap-enable flags (see SWRASTSTATE_WRAPFLAGS_xxx)
*/
DWORD dwWrapFlags;
/*
Current viewport
*/
D3DMRECT sViewPortRect;
/*
Current W and Z ranges
*/
NTV_TYPE WNear;
NTV_TYPE WFar;
NTV_TYPE ZMin;
NTV_TYPE ZMax;
/*
Depth of last fullscreen depth-clear
*/
float fLastClearZ;
/*
Colour of last fullscreen target clear
*/
DWORD dwLastClearColour;
/*
=========================== Fog State ================================
*/
/*
Current D3D table fog-mode
*/
DWORD dwD3DTableFogMode;
/*
Current D3D vertex fog-mode
*/
DWORD dwD3DVertexFogMode;
/*
Current D3D fog-colour
*/
DWORD dwD3DFogColour;
/*
Current D3D fog-density value
*/
NTV_TYPE D3DFogDensity;
/*
Current D3D fog-start value
*/
NTV_TYPE D3DFogStart;
/*
Current D3D fog-end value
*/
NTV_TYPE D3DFogEnd;
/*
store for one off fog calc on fog rstate changes
*/
NTV_TYPE OneOverEndMinusStart;
/*
???
*/
DWORD dwVertexFogColour;
DWORD dwLastSentVertexFogColour;
DWORD dwFogChangeCount;
/*
========================= Texture state ==============================
*/
/*
Number of enabled texture stages
*/
DWORD dwNumEnabledLayers;
/*
State for each D3D texture-stage
*/
LAYER_TSTATE sLState[MBX1_MAXTEXTURE_LAYERS];
/*
=========================== TN -state ================================
*/
SWTNLSTATE sSWTNLState;
} TRANSIENT_STATE, *PTRANSIENT_STATE;
#endif // _RSTATE_H_
/*****************************************************************************
End of file (RState.h)
*****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -