⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rstate.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 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 + -