{目录
... 宏函数
绘制
//绘制数组
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