OpenGLES---设置获取Shader程序属性

本文详细介绍了如何在OpenGLES中设置和获取Shader程序的属性,内容包括使用OpenGL-ES 2.0接口进行Shader值的操作,对Shader进行有效管理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

{目录
	引用Shader中的属性(自己在Shader中写的一些需要传值的类型) glGetU/A...
	设置Shader数据(Shader什么类型就用什么类型设置内容) glU/V...
}
 

http://blog.youkuaiyun.com/gamecocos2dx/article/details/51544050  OpenGLES---获取设置Shader值 API

{引用Shader中的属性(自己在Shader中写的一些需要传值的类型) glGetU/A...

	typedef	int attribute;
	typedef	int uniform;

	attribute   _position;
	uniform   	_MVP;
	const char* vs  = {
		...
		"uniform    mat4    _MVP;"
		"attribute  vec2    _position;"
		...
	};

	_MVP		= glGetUniformLocation(shaderValue.pID,"_MVP");
	_position   = glGetAttribLocation(shaderValue.pID, "_position");

	... 类似的API
	//获取Shader程序中的属性
	glGetAttribLocation (GLuint program, const GLchar* name);
	//获取Shader程序局部变量对象
	glGetUniformLocation (GLuint program, const GLchar* name);
	...
}


 
{设置Shader数据(Shader什么类型就用什么类型设置内容) glU/V...
	CELL::float2 pos[]={//逆时针给坐标点,顺时针会出问题
		CELL::float2(x,y),
		CELL::float2(x,y+h),
		CELL::float2(x+w,y),
		CELL::float2(x+w,y+h)
	};
	...
	glUniformMatrix4fv(shader._MVP,1,false,project.data());
	glVertexAttribPointer(shader._position,2,GL_FLOAT,false,sizeof(CELL::float2),pos);
	glDrawArrays(GL_TRIANGLE_STRIP,0,4);
	...

	... 类似的API
	//设置Shader数据 顶点数据源
	glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
	...
}
 

/** 获取Shader程序中的 attribute/Uniform 类型
 * @param  program 程序ID
 * @param  name    属性名字
 * @return 
 */
GL_APICALL int GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
GL_APICALL int GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);


/** 设置Shader数据 顶点数据源
* 指定顶点数据源(位置,法线,uv坐标,副法线,切线...需要绘制的顶点数据都叫属性)
* @param  indx Shader中的属性
* @param  size 数量(位置(x,y,z)数量3,颜色(r,g,b,a)数量4)
* @param  type 数据类型(GL_FLOAT,GL_BYTE, GL_UNSIGNED_BYTE ...)
* @param  normalized 是否规格化 指定当被访问时,固定点数据值是否应该被归一化(GL_TRUE)或者直接转换为固定点值(GL_FALSE)
* @param  stride 偏移量,初始值为0。
* @param  ptr  要传入的数据。初始值为0;
* @return 
*/
glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值