📄 vprogram.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 + -