📄 vprogram.c
字号:
/**************************************************************************
* 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 + -