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

📄 vprogram.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 H
字号:
/**************************************************************************
 * Name         : vprogram.h
 * Author       : VS
 * Created      : 08/03/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.
 *
 * Platform     : ANSI
 *
 * $Date: 2004/10/20 16:27:48 $ $Revision: 1.22.1.3 $
 * $Log: vprogram.h $
 **************************************************************************/

#ifndef _VPROGRAM_
#define _VPROGRAM_

#if defined(SUPPORT_VGP) || defined(SUPPORT_VGP_LITE)

#include "vpbinding.h"

#define GLES_VP_PASSTHROUGH_POSITION_INDEX	0
#define GLES_VP_PASSTHROUGH_COLOR_INDEX		1
#define GLES_VP_PASSTHROUGH_TEXCOORD_INDEX	2
#define GLES_VP_PASSTHROUGH_NUM_INPUTS		3


typedef struct GLESVPHeaderRec {
	IMG_UINT32	ui32MagicID;

	IMG_UINT8	ui8VersionMinor;
	
	IMG_UINT8	ui8VersionMajor;

	IMG_UINT16	ui16Pad;

	IMG_UINT32	ui32CodeSize;

	IMG_UINT32	ui32ClipPlanes;

	IMG_UINT32	aui32Sections[VGP_VERTPROG_NUM_SECTIONS];

}GLESVPHeader;

typedef struct GLESVPHeader2Rec {
	IMG_UINT32	ui32Flags;

	IMG_UINT32	ui32HWRevision;
	
	IMG_UINT32	aui32SectionDesc[VGP_VERTPROG_NUM_SECTIONS];

	IMG_UINT32	ui32NumBindings;

}GLESVPHeader2;


typedef struct GLESVPBindingHeaderRec {
	IMG_UINT32	ui32NumLocalParams;

	IMG_UINT32	ui32NumEnvParams;
	
	IMG_UINT32	ui32NumLocalConstants;

	IMG_UINT32	ui32NumState;

}GLESVPBindingHeader;

typedef struct GLESVPBindingInputRec {
	GLES_VP_BINDING_TYPE eBindingType;
	IMG_UINT32 ui32HWOffset;

	GLEScoord sData;
	IMG_UINT32 ui32SectionUsage;
}GLESVPBindingInput;


typedef struct GLESVPStateBindingRec {

	GLES_VP_BINDING_TYPE eBindingType;
	GLEScoord *psData;
	GLEScoord sData;
	IMG_UINT32 ui32HWOffset;
	IMG_UINT32 ui32NeedsFlag;
	IMG_UINT32 ui32Index0;
	IMG_UINT32 ui32Index1;
}GLESVPStateBinding;


#define GLES_PROGRAM_LOCAL_REQUIRED		0x00000001
#define GLES_PROGRAM_ENV_REQUIRED		0x00010000

#define GLES_PROGRAM_LOCAL_ALL_DIRTY	0x0000FFFF
#define GLES_PROGRAM_ENV_ALL_DIRTY		0xFFFF0000

typedef struct GLESVPConstantRec {

	GLEScoord sData;
	IMG_UINT32 ui32HWOffset;

}GLESVPConstant;


typedef struct GLESVertexProgramRec {
    /* reference count: create with 1; delete when 0 */
    IMG_UINT32 ui32Refcount;

	IMG_UINT32 ui32Name;
	
	IMG_BOOL bValid;

	GLESVPBindingHeader sBindingInfo;

	GLESVPStateBinding *psStateBinding;

	IMG_UINT32 aui32InputRegisterMapping[GLES_MAX_VERTEX_ATTRIBS];

	IMG_UINT32 *pui32Code;

	IMG_UINT32 ui32CodeSizeInBytes;

	IMG_UINT32 ui32InputMask;

	IMG_UINT32 ui32LocalParamMask;

	IMG_UINT32 ui32StateMask;

	IMG_UINT32 ui32LocalParamDirtyMask;

	IMG_UINT32 ui32StateDirtyMask;

	GLESVPConstant asLocalParam[GLES_MAX_PROGRAM_LOCAL_PARAMS];

	IMG_UINT32 aui32EnvParamHWOffset[GLES_MAX_PROGRAM_ENV_PARAMS];

	IMG_UINT32 ui32EnvParamMask;

	GLESVPConstant *psLocalConstants;

	IMG_UINT32 aui32SectionDefinitions[VGP_VERTPROG_NUM_SECTIONS];

	IMG_UINT32 ui32NumberAttribs; 

	GLESVPHeader2 sInfo;

	IMG_BOOL bRedirectSectionPresent;
	
	IMG_BOOL bFogSectionsPresent;
	
	IMG_UINT32 aui32FFInputRegisterMapping[GLES_VP_PASSTHROUGH_NUM_INPUTS];

}GLESVertexProgram;

typedef struct GLESvertexProgramStateRec {

	IMG_UINT32 ui32Name;

	GLEScoord asEnvParam[GLES_MAX_PROGRAM_ENV_PARAMS];

	IMG_UINT32 ui32EnvParamDirtyMask;

}GLESVertexProgramState;

typedef struct GLESVertexProgramMachineRec {

    /* Program object for the default program */
    GLESVertexProgram *psDefaultProgram;

    /* Currently bound program object */
    GLESVertexProgram *psCurrentProgram;

	/* Stores pointers to program objects, retrieved by name */
    GLESnamesArray *psNamesArray; 

}GLESVertexProgramMachine;

#define GLES_MATRIX_MODE_NORMAL		0
#define GLES_MATRIX_MODE_INVERSE	1
#define GLES_MATRIX_MODE_TRANSPOSE	2
#define GLES_MATRIX_MODE_INVTRANS	3

IMG_VOID SetupProgramNameArray(GLESnamesArray *psNamesArray);
IMG_BOOL CreateProgramState(GLESContext *gc, GLESContext *psSharedContext);
IMG_VOID InitProgramState(GLESContext *gc);
IMG_VOID LoadVertexProgramConstants(GLESContext *gc);
IMG_VOID FreeProgramState(GLESContext *gc);

#endif /* VGP || VGP_LITE */

#endif /* _VPROGRAM_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -