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

📄 vprogram.c

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/**************************************************************************
 * Name         : vprogram.c
 * Author       : BCB
 * 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/11/09 12:30:56 $ $Revision: 1.32.1.10 $
 * $Log: vprogram.c $
 * ;
 *  --- Revision Logs Removed --- 
 **************************************************************************/
#define MODULE_ID MODID_VPROGRAM

#if (defined(SUPPORT_VGP) || defined(SUPPORT_VGP_LITE)) && !defined(PASSTHROUGH_BUILD)



#include "context.h"
#include "slaveport.h"
#include "vgp.h"

#if defined(PROFILE_COMMON)

/***********************************************************************************
 Function Name      : glVertexAttrib4fARB
 Inputs             : index, x, y, z, w
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies current attrib values specified by index
************************************************************************************/
GLAPI_EXT void APIENTRY glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glVertexAttrib4f);
	
	if(index >= GLES_MAX_VERTEX_ATTRIBS)
	{
		SetError(gc, GL_INVALID_VALUE);
		GLES_TIME_STOP(GLES_TIMES_glVertexAttrib4f);
		return;
	}

	gc->sState.sCurrent.asAttrib[index].fX = x;
	gc->sState.sCurrent.asAttrib[index].fY = y;
	gc->sState.sCurrent.asAttrib[index].fZ = z;
	gc->sState.sCurrent.asAttrib[index].fW = w;

	GLES_TIME_STOP(GLES_TIMES_glVertexAttrib4f);
}

/***********************************************************************************
 Function Name      : glProgramEnvParameter4fARB
 Inputs             : target, index, x, y, z, w
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies program environment constant value 
					  specified by index
************************************************************************************/

GLAPI_EXT void APIENTRY glProgramEnvParameter4fARB(GLenum target, GLuint index,
											   GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4f);

	if(target != GL_VERTEX_PROGRAM_ARB)
	{
		SetError(gc, GL_INVALID_ENUM);
		GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4f);
		return;
	}

	/* Check if index is out of range */
	if(index >= GLES_MAX_PROGRAM_ENV_PARAMS)
	{
		SetError(gc, GL_INVALID_VALUE);
		GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4f);
		return;
	}

	gc->sState.sVertexProgram.asEnvParam[index].fX = x;
	gc->sState.sVertexProgram.asEnvParam[index].fY = y;
	gc->sState.sVertexProgram.asEnvParam[index].fZ = z;
	gc->sState.sVertexProgram.asEnvParam[index].fW = w;

	gc->sState.sVertexProgram.ui32EnvParamDirtyMask |= (GLES_PROGRAM_ENV_REQUIRED << index);

	GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4f);
}

/***********************************************************************************
 Function Name      : glProgramEnvParameter4fvARB
 Inputs             : target, index, params
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies program environment constant value 
					  specified by index
************************************************************************************/

GLAPI_EXT void APIENTRY glProgramEnvParameter4fvARB(GLenum target, GLuint index,
												const GLfloat *params)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4fv);

	if(target != GL_VERTEX_PROGRAM_ARB)
	{
		SetError(gc, GL_INVALID_ENUM);
		GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4fv);
		return;
	}

	/* Check if index is out of range */
	if(index >= GLES_MAX_PROGRAM_ENV_PARAMS)
	{
		SetError(gc, GL_INVALID_VALUE);
		GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4fv);
		return;
	}

	gc->sState.sVertexProgram.asEnvParam[index].fX = params[0];
	gc->sState.sVertexProgram.asEnvParam[index].fY = params[1];
	gc->sState.sVertexProgram.asEnvParam[index].fZ = params[2];
	gc->sState.sVertexProgram.asEnvParam[index].fW = params[3];

	gc->sState.sVertexProgram.ui32EnvParamDirtyMask |= (GLES_PROGRAM_ENV_REQUIRED << index);

	GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4fv);
}

/***********************************************************************************
 Function Name      : glProgramLocalParameter4fARB
 Inputs             : target, index, x, y, z, w
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies program local constant value 
					  specified by index
************************************************************************************/

GLAPI_EXT void APIENTRY glProgramLocalParameter4fARB(GLenum target, GLuint index,
												 GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4f);

	if(target != GL_VERTEX_PROGRAM_ARB)
	{
		SetError(gc, GL_INVALID_ENUM);
		GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4f);
		return;
	}

	/* Check if index is out of range */
	if(index >= GLES_MAX_PROGRAM_LOCAL_PARAMS)
	{
		SetError(gc, GL_INVALID_VALUE);
		GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4f);
		return;
	}

	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fX = x;
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fY = y;
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fZ = z;
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fW = w;

	gc->sVertexProgram.psCurrentProgram->ui32LocalParamDirtyMask |= (GLES_PROGRAM_LOCAL_REQUIRED << index);
	GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4f);
}

/***********************************************************************************
 Function Name      : glProgramLocalParameter4fvARB
 Inputs             : target, index, params
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies program local constant value 
					  specified by index
************************************************************************************/

GLAPI_EXT void APIENTRY glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat *params)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4fv);

	if(target != GL_VERTEX_PROGRAM_ARB)
	{
		SetError(gc, GL_INVALID_ENUM);
		GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4fv);
		return;
	}

	/* Check if index is out of range */
	if(index >= GLES_MAX_PROGRAM_LOCAL_PARAMS)
	{
		SetError(gc, GL_INVALID_VALUE);
		GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4fv);
		return;
	}

	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fX = params[0];
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fY = params[1];
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fZ = params[2];
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fW = params[3];

	gc->sVertexProgram.psCurrentProgram->ui32LocalParamDirtyMask |= (GLES_PROGRAM_LOCAL_REQUIRED << index);
	GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4fv);
}

#endif

/***********************************************************************************
 Function Name      : glVertexAttrib4xIMG
 Inputs             : index, x, y, z, w
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies current attrib values specified by index
************************************************************************************/

GLAPI_EXT void APIENTRY glVertexAttrib4xIMG(GLuint index, GLfixed x, GLfixed y, GLfixed z, GLfixed w)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glVertexAttrib4f);
	
	if(index >= GLES_MAX_VERTEX_ATTRIBS)
	{
		SetError(gc, GL_INVALID_VALUE);
		GLES_TIME_STOP(GLES_TIMES_glVertexAttrib4f);
		return;
	}

	gc->sState.sCurrent.asAttrib[index].fX = FIXED_TO_FLOAT(x);
	gc->sState.sCurrent.asAttrib[index].fY = FIXED_TO_FLOAT(y);
	gc->sState.sCurrent.asAttrib[index].fZ = FIXED_TO_FLOAT(z);
	gc->sState.sCurrent.asAttrib[index].fW = FIXED_TO_FLOAT(w);

	GLES_TIME_STOP(GLES_TIMES_glVertexAttrib4f);
}

/***********************************************************************************
 Function Name      : glProgramLocalParameter4xIMG
 Inputs             : target, index, x, y, z, w
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies program local constant value 
					  specified by index
************************************************************************************/

GLAPI_EXT void APIENTRY glProgramLocalParameter4xIMG(GLenum target, GLuint index,
								GLfixed x, GLfixed y, GLfixed z, GLfixed w)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4xv);

	if(target != GL_VERTEX_PROGRAM_ARB)
	{
		SetError(gc, GL_INVALID_ENUM);
		GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4xv);
		return;
	}

	/* Check if index is out of range */
	if(index >= GLES_MAX_PROGRAM_LOCAL_PARAMS)
	{
		SetError(gc, GL_INVALID_VALUE);
		GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4xv);
		return;
	}

	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fX = FIXED_TO_FLOAT(x);
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fY = FIXED_TO_FLOAT(y);
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fZ = FIXED_TO_FLOAT(z);
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fW = FIXED_TO_FLOAT(w);

	gc->sVertexProgram.psCurrentProgram->ui32LocalParamDirtyMask |= (GLES_PROGRAM_LOCAL_REQUIRED << index);
	GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4xv);
}

/***********************************************************************************
 Function Name      : glProgramLocalParameter4xvIMG
 Inputs             : target, index, params
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies program local constant value 
					  specified by index
************************************************************************************/

GLAPI_EXT void APIENTRY glProgramLocalParameter4xvIMG(GLenum target, GLuint index, 
								 const GLfixed *params)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4xv);

	if(target != GL_VERTEX_PROGRAM_ARB)
	{
		SetError(gc, GL_INVALID_ENUM);
		GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4xv);
		return;
	}

	/* Check if index is out of range */
	if(index >= GLES_MAX_PROGRAM_LOCAL_PARAMS)
	{
		SetError(gc, GL_INVALID_VALUE);
		GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4xv);
		return;
	}

	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fX = FIXED_TO_FLOAT(params[0]);
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fY = FIXED_TO_FLOAT(params[1]);
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fZ = FIXED_TO_FLOAT(params[2]);
	gc->sVertexProgram.psCurrentProgram->asLocalParam[index].sData.fW = FIXED_TO_FLOAT(params[3]);

	gc->sVertexProgram.psCurrentProgram->ui32LocalParamDirtyMask |= (GLES_PROGRAM_LOCAL_REQUIRED << index);
	GLES_TIME_START(GLES_TIMES_glProgramLocalParameter4xv);
}

/***********************************************************************************
 Function Name      : glProgramEnvParameter4xIMG
 Inputs             : target, index, x, y, z, w
 Outputs            : -
 Returns            : -
 Description        : ENTRYPOINT: Specifies program environment constant value 
					  specified by index
************************************************************************************/

GLAPI_EXT void APIENTRY glProgramEnvParameter4xIMG(GLenum target, GLuint index, GLfixed x, GLfixed y, GLfixed z, GLfixed w)
{
	__GL_GET_CONTEXT();

	GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4x);

	if(target != GL_VERTEX_PROGRAM_ARB)
	{
		SetError(gc, GL_INVALID_ENUM);
		GLES_TIME_START(GLES_TIMES_glProgramEnvParameter4x);
		return;
	}

	/* Check if index is out of range */
	if(index >= GLES_MAX_PROGRAM_ENV_PARAMS)
	{
		SetError(gc, GL_INVALID_VALUE);

⌨️ 快捷键说明

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