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

📄 shaderobjects.c

📁 mesa-6.5-minigui源码
💻 C
📖 第 1 页 / 共 2 页
字号:
GLvoid GLAPIENTRY_mesa_Uniform4fvARB (GLint location, GLsizei count, const GLfloat *value){	GET_CURRENT_CONTEXT(ctx);	GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4fvARB");

	FLUSH_VERTICES(ctx, _NEW_PROGRAM);	if (pro != NULL)	{		if (!_slang_write_uniform (pro, location, count, value, GL_FLOAT_VEC4))			_mesa_error (ctx, GL_INVALID_OPERATION, "glUniform4fvARB");	}}GLvoid GLAPIENTRY_mesa_Uniform1ivARB (GLint location, GLsizei count, const GLint *value){	GET_CURRENT_CONTEXT(ctx);	GET_CURRENT_LINKED_PROGRAM(pro, "glUniform1ivARB");

	FLUSH_VERTICES(ctx, _NEW_PROGRAM);	if (pro != NULL)	{		if (!_slang_write_uniform (pro, location, count, value, GL_INT))			_mesa_error (ctx, GL_INVALID_OPERATION, "glUniform1ivARB");	}}GLvoid GLAPIENTRY_mesa_Uniform2ivARB (GLint location, GLsizei count, const GLint *value){	GET_CURRENT_CONTEXT(ctx);	GET_CURRENT_LINKED_PROGRAM(pro, "glUniform2ivARB");

	FLUSH_VERTICES(ctx, _NEW_PROGRAM);	if (pro != NULL)	{		if (!_slang_write_uniform (pro, location, count, value, GL_INT_VEC2))			_mesa_error (ctx, GL_INVALID_OPERATION, "glUniform2ivARB");	}}GLvoid GLAPIENTRY_mesa_Uniform3ivARB (GLint location, GLsizei count, const GLint *value){	GET_CURRENT_CONTEXT(ctx);	GET_CURRENT_LINKED_PROGRAM(pro, "glUniform3ivARB");

	FLUSH_VERTICES(ctx, _NEW_PROGRAM);	if (pro != NULL)	{		if (!_slang_write_uniform (pro, location, count, value, GL_INT_VEC3))			_mesa_error (ctx, GL_INVALID_OPERATION, "glUniform3ivARB");	}}GLvoid GLAPIENTRY_mesa_Uniform4ivARB (GLint location, GLsizei count, const GLint *value){	GET_CURRENT_CONTEXT(ctx);	GET_CURRENT_LINKED_PROGRAM(pro, "glUniform4ivARB");

	FLUSH_VERTICES(ctx, _NEW_PROGRAM);	if (pro != NULL)	{		if (!_slang_write_uniform (pro, location, count, value, GL_INT_VEC4))			_mesa_error (ctx, GL_INVALID_OPERATION, "glUniform4ivARB");	}}GLvoid GLAPIENTRY_mesa_UniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){	GET_CURRENT_CONTEXT(ctx);	GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix2fvARB");

	FLUSH_VERTICES(ctx, _NEW_PROGRAM);	if (pro != NULL)	{		if (transpose)		{			GLfloat *trans, *pt;			const GLfloat *pv;			trans = (GLfloat *) _mesa_malloc (count * 4 * sizeof (GLfloat));			if (trans == NULL)			{				_mesa_error (ctx, GL_OUT_OF_MEMORY, "glUniformMatrix2fvARB");				return;			}			for (pt = trans, pv = value; pt != trans + count * 4; pt += 4, pv += 4)			{				pt[0] = pv[0];				pt[1] = pv[2];				pt[2] = pv[1];				pt[3] = pv[3];			}			if (!_slang_write_uniform (pro, location, count, trans, GL_FLOAT_MAT2))				_mesa_error (ctx, GL_INVALID_OPERATION, "glUniformMatrix2fvARB");			_mesa_free (trans);		}		else		{			if (!_slang_write_uniform (pro, location, count, value, GL_FLOAT_MAT2))				_mesa_error (ctx, GL_INVALID_OPERATION, "glUniformMatrix2fvARB");		}	}}GLvoid GLAPIENTRY_mesa_UniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){	GET_CURRENT_CONTEXT(ctx);	GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix3fvARB");

	FLUSH_VERTICES(ctx, _NEW_PROGRAM);	if (pro != NULL)	{		if (transpose)		{			GLfloat *trans, *pt;			const GLfloat *pv;			trans = (GLfloat *) _mesa_malloc (count * 9 * sizeof (GLfloat));			if (trans == NULL)			{				_mesa_error (ctx, GL_OUT_OF_MEMORY, "glUniformMatrix3fvARB");				return;			}			for (pt = trans, pv = value; pt != trans + count * 9; pt += 9, pv += 9)			{				pt[0] = pv[0];				pt[1] = pv[3];				pt[2] = pv[6];				pt[3] = pv[1];				pt[4] = pv[4];				pt[5] = pv[7];				pt[6] = pv[2];				pt[7] = pv[5];				pt[8] = pv[8];			}			if (!_slang_write_uniform (pro, location, count, trans, GL_FLOAT_MAT3))				_mesa_error (ctx, GL_INVALID_OPERATION, "glUniformMatrix3fvARB");			_mesa_free (trans);		}		else		{			if (!_slang_write_uniform (pro, location, count, value, GL_FLOAT_MAT3))				_mesa_error (ctx, GL_INVALID_OPERATION, "glUniformMatrix3fvARB");		}	}}GLvoid GLAPIENTRY_mesa_UniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value){	GET_CURRENT_CONTEXT(ctx);	GET_CURRENT_LINKED_PROGRAM(pro, "glUniformMatrix4fvARB");

	FLUSH_VERTICES(ctx, _NEW_PROGRAM);	if (pro != NULL)	{		if (transpose)		{			GLfloat *trans, *pt;			const GLfloat *pv;			trans = (GLfloat *) _mesa_malloc (count * 16 * sizeof (GLfloat));			if (trans == NULL)			{				_mesa_error (ctx, GL_OUT_OF_MEMORY, "glUniformMatrix4fvARB");				return;			}			for (pt = trans, pv = value; pt != trans + count * 16; pt += 16, pv += 16)			{				_math_transposef (pt, pv);			}			if (!_slang_write_uniform (pro, location, count, trans, GL_FLOAT_MAT4))				_mesa_error (ctx, GL_INVALID_OPERATION, "glUniformMatrix4fvARB");			_mesa_free (trans);		}		else		{			if (!_slang_write_uniform (pro, location, count, value, GL_FLOAT_MAT4))				_mesa_error (ctx, GL_INVALID_OPERATION, "glUniformMatrix4fvARB");		}	}}static GLboolean_mesa_get_object_parameter (GLhandleARB obj, GLenum pname, GLvoid *params, GLboolean *integral,	GLint *size){	GET_CURRENT_CONTEXT(ctx);	GLint *ipar = (GLint *) params;	/* set default values */	*integral = GL_TRUE;	/* indicates param type, TRUE: GLint, FALSE: GLfloat */	*size = 1;				/* param array size */	switch (pname)	{	case GL_OBJECT_TYPE_ARB:	case GL_OBJECT_DELETE_STATUS_ARB:	case GL_OBJECT_INFO_LOG_LENGTH_ARB:		{			GET_GENERIC(gen, obj, "glGetObjectParameterivARB");			if (gen == NULL)				return GL_FALSE;			switch (pname)			{			case GL_OBJECT_TYPE_ARB:				*ipar = (**gen).GetType (gen);				break;			case GL_OBJECT_DELETE_STATUS_ARB:				*ipar = (**gen).GetDeleteStatus (gen);				break;			case GL_OBJECT_INFO_LOG_LENGTH_ARB:				{					const GLcharARB *info = (**gen).GetInfoLog (gen);					if (info == NULL)						*ipar = 0;					else						*ipar = _mesa_strlen (info) + 1;				}				break;			}			RELEASE_GENERIC(gen);		}		break;	case GL_OBJECT_SUBTYPE_ARB:	case GL_OBJECT_COMPILE_STATUS_ARB:	case GL_OBJECT_SHADER_SOURCE_LENGTH_ARB:		{			GET_SHADER(sha, obj, "glGetObjectParameterivARB");			if (sha == NULL)				return GL_FALSE;			switch (pname)			{			case GL_OBJECT_SUBTYPE_ARB:				*ipar = (**sha).GetSubType (sha);				break;			case GL_OBJECT_COMPILE_STATUS_ARB:				*ipar = (**sha).GetCompileStatus (sha);				break;			case GL_OBJECT_SHADER_SOURCE_LENGTH_ARB:				{					const GLcharARB *src = (**sha).GetSource (sha);					if (src == NULL)						*ipar = 0;					else						*ipar = _mesa_strlen (src) + 1;				}				break;			}			RELEASE_SHADER(sha);		}		break;	case GL_OBJECT_LINK_STATUS_ARB:	case GL_OBJECT_VALIDATE_STATUS_ARB:	case GL_OBJECT_ATTACHED_OBJECTS_ARB:	case GL_OBJECT_ACTIVE_UNIFORMS_ARB:	case GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB:		{			GET_PROGRAM(pro, obj, "glGetObjectParameterivARB");			if (pro == NULL)				return GL_FALSE;			switch (pname)			{			case GL_OBJECT_LINK_STATUS_ARB:				*ipar = (**pro).GetLinkStatus (pro);				break;			case GL_OBJECT_VALIDATE_STATUS_ARB:				*ipar = (**pro).GetValidateStatus (pro);				break;			case GL_OBJECT_ATTACHED_OBJECTS_ARB:				*ipar = (**pro)._container.GetAttachedCount ((I_CONTAINER) pro);				break;			case GL_OBJECT_ACTIVE_UNIFORMS_ARB:				*ipar = _slang_get_active_uniform_count (pro);				break;			case GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB:				*ipar = _slang_get_active_uniform_max_length (pro);				break;			}			RELEASE_PROGRAM(pro);		}		break;	default:		_mesa_error (ctx, GL_INVALID_ENUM, "glGetObjectParameterivARB");		return GL_FALSE;	}	return GL_TRUE;}GLvoid GLAPIENTRY_mesa_GetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params){	GLboolean integral;	GLint size;	assert (sizeof (GLfloat) == sizeof (GLint));	if (_mesa_get_object_parameter (obj, pname, (GLvoid *) params, &integral, &size))		if (integral)		{			GLint i;			for (i = 0; i < size; i++)				params[i] = (GLfloat) ((GLint *) params)[i];		}}GLvoid GLAPIENTRY_mesa_GetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params){	GLboolean integral;	GLint size;	assert (sizeof (GLfloat) == sizeof (GLint));	if (_mesa_get_object_parameter (obj, pname, (GLvoid *) params, &integral, &size))		if (!integral)		{			GLint i;			for (i = 0; i < size; i++)				params[i] = (GLint) ((GLfloat *) params)[i];		}}static GLvoid_mesa_get_string (const GLcharARB *src, GLsizei maxLength, GLsizei *length, GLcharARB *str){	GLsizei len;	if (maxLength == 0)	{		if (length != NULL)			*length = 0;		return;	}	if (src == NULL)		src = "";	len = _mesa_strlen (src);	if (len >= maxLength)		len = maxLength - 1;	_mesa_memcpy (str, src, len * sizeof (GLcharARB));	str[len] = '\0';	if (length != NULL)		*length = len;}GLvoid GLAPIENTRY_mesa_GetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog){	GET_CURRENT_CONTEXT(ctx);	GET_GENERIC(gen, obj, "glGetInfoLogARB");	if (gen != NULL)	{		_mesa_get_string ((**gen).GetInfoLog (gen), maxLength, length, infoLog);		RELEASE_GENERIC(gen);	}}GLvoid GLAPIENTRY_mesa_GetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count,							 GLhandleARB *obj){	GET_CURRENT_CONTEXT(ctx);	GLsizei cnt, i;	GET_CONTAINER(con, containerObj, "glGetAttachedObjectsARB");	if (con != NULL)	{		cnt = (**con).GetAttachedCount (con);		if (cnt > maxCount)			cnt = maxCount;		if (count != NULL)			*count = cnt;		for (i = 0; i < cnt; i++)		{			I_GENERIC x = (**con).GetAttached (con, i);			obj[i] = (**x).GetName (x);			RELEASE_GENERIC(x);		}		RELEASE_CONTAINER(con);	}}GLint GLAPIENTRY_mesa_GetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name){	GET_CURRENT_CONTEXT(ctx);	GLint loc = -1;	GET_LINKED_PROGRAM(pro, programObj, "glGetUniformLocationARB");	if (pro != NULL)	{		if (name != NULL && (name[0] != 'g' || name[1] != 'l' || name[2] != '_'))			loc = _slang_get_uniform_location (pro, name);		RELEASE_PROGRAM(pro);	}	return loc;}GLvoid GLAPIENTRY_mesa_GetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length,	GLint *size, GLenum *type, GLcharARB *name){	GET_CURRENT_CONTEXT(ctx);	GET_PROGRAM(pro, programObj, "glGetActiveUniformARB");	if (pro != NULL)	{		if (index < _slang_get_active_uniform_count (pro))			_slang_get_active_uniform (pro, index, maxLength, length, size, type, name);		else			_mesa_error (ctx, GL_INVALID_VALUE, "glGetActiveUniformARB");		RELEASE_PROGRAM(pro);	}}GLvoid GLAPIENTRY_mesa_GetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params){	GET_CURRENT_CONTEXT(ctx);	GET_LINKED_PROGRAM(pro, programObj, "glGetUniformfvARB");	if (pro != NULL)	{		/* TODO */		RELEASE_PROGRAM(pro);	}}GLvoid GLAPIENTRY_mesa_GetUniformivARB (GLhandleARB programObj, GLint location, GLint *params){	GET_CURRENT_CONTEXT(ctx);	GET_LINKED_PROGRAM(pro, programObj, "glGetUniformivARB");	if (pro != NULL)	{		/* TODO */		RELEASE_PROGRAM(pro);	}}GLvoid GLAPIENTRY_mesa_GetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source){	GET_CURRENT_CONTEXT(ctx);	GET_SHADER(sha, obj, "glGetShaderSourceARB");	if (sha != NULL)	{		_mesa_get_string ((**sha).GetSource (sha), maxLength, length, source);		RELEASE_SHADER(sha);	}}/* GL_ARB_vertex_shader */GLvoid GLAPIENTRY_mesa_BindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name){	GET_CURRENT_CONTEXT(ctx);	GET_PROGRAM(pro, programObj, "glBindAttribLocationARB");	if (pro != NULL)	{		if (name != NULL && (name[0] != 'g' || name[1] != 'l' || name[2] != '_'))		{			/* TODO */		}		RELEASE_PROGRAM(pro);	}}GLvoid GLAPIENTRY_mesa_GetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length,						  GLint *size, GLenum *type, GLcharARB *name){	GET_CURRENT_CONTEXT(ctx);	GET_PROGRAM(pro, programObj, "glGetActiveAttribARB");	if (pro != NULL)	{		/* TODO */		RELEASE_PROGRAM(pro);	}}GLint GLAPIENTRY_mesa_GetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name){	GET_CURRENT_CONTEXT(ctx);	GLint loc = -1;	GET_PROGRAM(pro, programObj, "glGetAttribLocationARB");	if (pro != NULL)	{		if (name != NULL && (name[0] != 'g' || name[1] != 'l' || name[2] != '_'))		{			/* TODO */		}		RELEASE_PROGRAM(pro);	}	return loc;}GLvoid_mesa_init_shaderobjects (GLcontext *ctx){	ctx->ShaderObjects.CurrentProgram = NULL;
	ctx->ShaderObjects._FragmentShaderPresent = GL_FALSE;
	ctx->ShaderObjects._VertexShaderPresent = GL_FALSE;	_mesa_init_shaderobjects_3dlabs (ctx);}

⌨️ 快捷键说明

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