OpenGLES—API(gl2.h)

{目录
	... 宏函数
	
绘制
	//绘制数组
	glDrawArrays (GLenum mode, GLint first, GLsizei count);
	//绘制元素
	glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);

指定Shader内容
	//创建/删除Shader程序
	glCreateShader (GLenum type);
	glDeleteShader (GLuint shader); //参数是Shader的id

	//指定shader的源代码
	glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
	//获取Shader源代码
	glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
	//检查Shader状态
	glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
	//编译Shader
	glCompileShader (GLuint shader);
	//获取Shader日志
	glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);

	//指定二进制 shader(有的显卡支持在线编译,有的支持二进制shader文件)
	glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
	
	//释放shader编译器占的资源
	glReleaseShaderCompiler (void);

引用Shader中的属性(自己在Shader中写的一些需要传值的类型)
	//获取Shader程序中的属性(attribute 定义的变量)
	glGetAttribLocation (GLuint program, const GLchar* name);
	//获取Shader程序局部变量对象(uniform 定义的变量)
	glGetUniformLocation (GLuint program, const GLchar* name);
	//获取Shader精度值
	glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
	
	glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);

设置Shader数据(Shader什么类型就用什么类型设置内容) glU/V...
	//设置Shader内Uniform变量的值
	glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
	glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
	glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
	
	//设置Shader内Uniform变量的值(值float)
	glUniform1f (GLint location, GLfloat x);
	glUniform1fv (GLint location, GLsizei count, const GLfloat* v); 

	//设置Shader内Uniform变量的值(值int)
	glUniform1i (GLint location, GLint x);
	glUniform1iv (GLint location, GLsizei count, const GLint* v);

	glUniform2f (GLint location, GLfloat x, GLfloat y);
	glUniform2fv (GLint location, GLsizei count, const GLfloat* v);

	glUniform2i (GLint location, GLint x, GLint y);
	glUniform2iv (GLint location, GLsizei count, const GLint* v);

	glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
	glUniform3fv (GLint location, GLsizei count, const GLfloat* v);

	glUniform3i (GLint location, GLint x, GLint y, GLint z);
	glUniform3iv (GLint location, GLsizei count, const GLint* v);

	glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
	glUniform4fv (GLint location, GLsizei count, const GLfloat* v);

	glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
	glUniform4iv (GLint location, GLsizei count, const GLint* v);

	glVertexAttrib1f (GLuint indx, GLfloat x);
	glVertexAttrib1fv (GLuint indx, const GLfloat* values);

	glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
	glVertexAttrib2fv (GLuint indx, const GLfloat* values);

	glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
	glVertexAttrib3fv (GLuint indx, const GLfloat* values);

	glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
	glVertexAttrib4fv (GLuint indx, const GLfloat* values);

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

创建程序(加载Shader)
	//创建程序
	glCreateProgram (void);
	//删除程序
	glDeleteProgram (GLuint program);
	//获取程序信息
	glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
	//验证程序
	glValidateProgram (GLuint program);

	//加载Shader
	glAttachShader (GLuint program, GLuint shader);
	//链接程序
	glLinkProgram (GLuint program);
	//使用程序
	glUseProgram (GLuint program);
	//获取程序中的属性
	glGetProgramiv (GLuint program, GLenum pname, GLint* params);
	glGetUniformfv (GLuint program, GLint location, GLfloat* params);
	glGetUniformiv (GLuint program, GLint location, GLint* params);
	//获取Shader程序中attribute变量
	glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
	//获取Shader程序中uniform变量
	glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
	glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);

缓冲区
	//生成/删除缓冲区的索引
	glGenBuffers (GLsizei n, GLuint* buffers);
	glDeleteBuffers (GLsizei n, const GLuint* buffers);

	//生成/删除帧缓冲区的索引
	glGenFramebuffers (GLsizei n, GLuint* framebuffers);
	glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);

	//创建/删除渲染缓冲区
	glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
	glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers); 

 	//绑定/取消缓冲区
	glBindBuffer (GLenum target, GLuint buffer);

	//绑定/取消渲染缓冲区
	glBindRenderbuffer (GLenum target, GLuint renderbuffer);
	//绑定/取消框架(Frame)缓冲区
	glBindFramebuffer (GLenum target, GLuint framebuffer);

	//设置缓冲区数据
	glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
	//修改部分缓冲区数据
	glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);


	//绘制渲染缓冲区的存储大小
	glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
	//帧缓冲区数据渲染到纹理上
	glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
	//帧缓冲区与渲染缓冲区绑定
	glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
	//帧缓冲区参数
	glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params); 
	//渲染缓冲区参数
	glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
	//获取帧缓冲状态
	glCheckFramebufferStatus (GLenum target);
	//获取缓冲区参数内容
	glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);

纹理
	//关联纹理层(GL_TEXTURE0 ~ GL_TEXTURE31)
	glActiveTexture (GLenum texture);
	//生成纹理
	glGenTextures (GLsizei n, GLuint* textures); 
	//删除纹理
	glDeleteTextures (GLsizei n, const GLuint* textures); 
	//绑定纹理
	glBindTexture (GLenum target, GLuint texture);
	//将图片数据传给opengl
	glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); 
	//将图片局部数据传给opengl
	glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
	//压缩纹理
	glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
	//将图片局部数据传给opengl
	glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
	//拷贝纹理
	glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
	//拷贝局部纹理
	glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
	
	//设置纹理参数(i/f)
	glTexParameterf (GLenum target, GLenum pname, GLfloat param);
	glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
	glTexParameteri (GLenum target, GLenum pname, GLint param);
	glTexParameteriv (GLenum target, GLenum pname, const GLint* params);

	//获取纹理参数(i/f)
	glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
	glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);



获取数据类型
	glGetBooleanv (GLenum pname, GLboolean* params);
	glGetFloatv (GLenum pname, GLfloat* params); 
	glGetIntegerv (GLenum pname, GLint* params);
	//获取标签名字内容
	glGetString (GLenum name);

混合
	glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
	glBlendEquation ( GLenum mode );
	glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
	//指定像素混合算法
	glBlendFunc (GLenum sfactor, GLenum dfactor);
	glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);

----	

	//视口大小
	glViewport (GLint x, GLint y, GLsizei width, GLsizei height); 

	
	glClear (GLbitfield mask);
	//清楚颜色(rgba)
	glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
	glClearDepthf (GLclampf depth);
	glClearStencil (GLint s);
	glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
	

	//启用/禁用顶点数组
	glEnableVertexAttribArray (GLuint index);
	glDisableVertexAttribArray (GLuint index);

	glDepthFunc (GLenum func);
	glDepthMask (GLboolean flag);
	glDepthRangef (GLclampf zNear, GLclampf zFar);
	glDetachShader (GLuint program, GLuint shader);
	
	//启动/废弃状态
	glEnable (GLenum cap); 
	glDisable (GLenum cap);

	glFinish (void);
	glFlush (void);


	//剔除方向(顺/逆时针)
	glFrontFace (GLenum mode); 
	//剔除那个面(背/正/全部面)
	glCullFace (GLenum mode); 

	glGenerateMipmap (GLenum target);
 	
	glGetError (void);
	
	glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
	glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
	glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
	
	glHint (GLenum target, GLenum mode); //抗锯齿
	glIsBuffer (GLuint buffer);
	glIsEnabled (GLenum cap);
	glIsFramebuffer (GLuint framebuffer);
	glIsProgram (GLuint program);
	glIsRenderbuffer (GLuint renderbuffer);
	glIsShader (GLuint shader);
	glIsTexture (GLuint texture);
	glLineWidth (GLfloat width);
	
	//设置像素存储模式
	glPixelStorei (GLenum pname, GLint param);
	//从帧缓冲区读取一组数据
	glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
	//设定opengl用于计算深度值的比例和单元
	glPolygonOffset (GLfloat factor, GLfloat units);

	glSampleCoverage (GLclampf value, GLboolean invert);

	//裁剪的位置
	glScissor (GLint x, GLint y, GLsizei width, GLsizei height); 
	
	glStencilFunc (GLenum func, GLint ref, GLuint mask);
	glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
	glStencilMask (GLuint mask);
	glStencilMaskSeparate (GLenum face, GLuint mask);
	glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
	glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
}

#ifndef __gl2_h_
#define __gl2_h_

/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */

#include <GLES2/gl2platform.h>

#ifdef __cplusplus
extern "C" {
#endif

/*
 * This document is licensed under the SGI Free Software B License Version
 * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
 */

/*-------------------------------------------------------------------------
 * Data type definitions
 *-----------------------------------------------------------------------*/

typedef void			 GLvoid;
typedef char             GLchar;
typedef unsigned int     GLenum;
typedef unsigned char    GLboolean;
typedef unsigned int     GLbitfield;
typedef khronos_int8_t   GLbyte;
typedef short            GLshort;
typedef int              GLint;
typedef int              GLsizei;
typedef khronos_uint8_t  GLubyte;
typedef unsigned short   GLushort;
typedef unsigned int     GLuint;
typedef khronos_float_t  GLfloat;
typedef khronos_float_t  GLclampf;
typedef khronos_int32_t  GLfixed;

/* GL types for handling large vertex buffer objects */
typedef khronos_intptr_t GLintptr;
typedef khronos_ssize_t  GLsizeiptr;

/* OpenGL ES core versions */
#define GL_ES_VERSION_2_0                 1 //

/* ClearBufferMask */
#define GL_DEPTH_BUFFER_BIT               0x00000100 //深度缓冲区 
#define GL_STENCIL_BUFFER_BIT             0x00000400 //模板缓冲区 
#define GL_COLOR_BUFFER_BIT               0x00004000 //颜色缓冲区 

/* Boolean */
#define GL_FALSE                          0 //false(布尔类型)
#define GL_TRUE                           1 //true(布尔类型)

/* BeginMode */
#define GL_POINTS                         0x0000 // 点 
#define GL_LINES                          0x0001 // 线 
#define GL_LINE_LOOP                      0x0002 // 闭合线 
#define GL_LINE_STRIP                     0x0003 // 折线 
#define GL_TRIANGLES                      0x0004 // 多个三角形(相连的三角形)
#define GL_TRIANGLE_STRIP                 0x0005 // 三角形带
#define GL_TRIANGLE_FAN                   0x0006 // 三角形扇 

/* AlphaFunction (not supported in ES20) */
/*      GL_NEVER */
/*      GL_LESS */
/*      GL_EQUAL */
/*      GL_LEQUAL */
/*      GL_GREATER */
/*      GL_NOTEQ
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值