OpenGL及GLUT---------------函数整理

1.GLUT

// 进入GLUT事件处理循环,在GLUT程序中最多调用一次该函数,一旦被调用,该函数将永不返回,它将根据需要调用已注册的任何回调函数。
void glutMainLoop(void); 
// 将当前窗口标记为需要重新显示,通过glutMainLoop下一次迭代,将调用窗口的显示回调来重新显示窗口
void glutPostRedisplay(void);
// 为当前窗口设置display回调函数
void glutDisplayFunc(void (*func)(void));
// 为当前窗口设置reshape回调函数 void glutReshapeFunc(void (*func)(int width, int height));
// 设置当前窗口的键盘回调函数 void glutKeyboardFunc(void(* func)(unsigned char key, int x,int y));
// 设置当前窗口的特殊键盘回调函数 void glutSpecialFunc(void(* func)(int key,int x,int y));
// 设置初始显示模式
void glutInitDisplayMode(unsigned int mode);
// eg
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
// 渲染一个实心茶壶,  size 茶壶相对大小
void glutSolidTeapot(GLdouble size); 

2.glMatrixMode()

glMatrixMode是用来指定哪一个矩阵是当前矩阵,而它的参数代表要操作的目标

GL_PROJECTION是对投影矩阵操作

glMatrixMode(GL_PROJECTION); //将当前矩阵指定为投影矩阵

//然后把矩阵设为单位矩阵:
glLoadIdentity();
//然后调用glFrustum()或gluPerspective(),它们生成的矩阵会与当前的矩阵相乘,生成透视的效果;

GL_MODELVIEW是对模型视景矩阵操作

GL_TEXTURE是对纹理矩阵进行随后的操作

3.glLoadIdentity()

  OpenGL为我们提供了一个非常简单的恢复初始坐标系的手段,那就是调用glLoadIdentity()命令。

  该命令是一个无参的无值函数,其功能是用一个4×4的单位矩阵来替换当前矩阵,实际上就是对当前矩阵进行初始化。

4.

//你可以使用下面的两个函数来加载你的列主序的矩阵到投影矩阵,模型视图矩阵或者纹理矩阵栈中
//用指定矩阵替代当前矩阵
glLoadMatrixf(GLfloat* m); // float glLoadMatrixd(GLdouble* m); // double
//相对应的OpenGL还提供了加载行主序的矩阵的两个函数

void glLoadTransposeMatrixf(GLfloat *m);
void glLoadTransposeMatrixd(GLdouble *m);

5 返回所选参数的值

void glGetFloatv(GLenum pname, GLfloat * data); // float类型的

6

glEnable(GL_DEPTH_TEST); // 进行深度比较,并更新深度缓冲区

7

// 链接程序,返回对应‘name’的程序program中的统一变量的地址
 GLint glGetUniformLocation(GLuint program, const GLchar *name); 

8

// 指定统一变量的值(将value指向的值赋予location代表的统一变量)
 void glUniform4fv(GLint location, GLsizei count, const GLfloat *value);

9

// 设置视窗左上角坐标,窗口宽度和高度
void glViewport(    GLint x,GLint y,GLsizei width,GLsizei height);

10

// 创建或使用命名缓冲区对象
void glBindBuffer(GLenum target,GLuint buffer);

// target:选择要绑定的缓冲区类型,只有当前被绑定的才会被用户操作,通过(从表中选择,表见api文档)
// buffer:指定绑定缓冲区的handle

11

// 创建和初始化缓冲区对象的数据存储
void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage);
// target:绑定的缓冲区对象类型
// size:指定缓冲区对象的新数据存储的大小(以字节为单位)
// data:用于初始化的数据的指针,没有数据则为NULL
// usage:指定使用的数据存储的方式

12..(OpenGL2.1)

// 启用客户端功能
void glEnableClientState( GLenum cap);
// cap: 指定要启动的功能,例举两个参数如下,详细见api
// GL_COLOR_ARRAY 如果启用,则在调用glArrayElement,glDrawArrays,glDrawElements,glDrawRangeElements ,
//   glMultiDrawArrays或glMultiDrawElements时,将启用颜色数组进行写入和使用。
// GL_VERTEX_ARRAY 如果启用,在调用上述函数时,将启用顶点数组进行写入和使用


// 指定渲染时要使用的顶点坐标数组的位置和数据格式,
// 如果已将缓冲区对象绑定到缓冲区,则将指针视为缓冲区对象的数据存储中的字节偏移量
void glVertexPointer(    GLint size, // 每个定点的坐标维数
     GLenum type,                    // 每个坐标的数据类型
     GLsizei stride,                 // 从一个顶点到下一个顶点的字节跨度
     const GLvoid * pointer);        // 指定指向数组中第一个定点的第一个坐标的指针,初始值为0
// 在有限时间内强制执行之前发出的GL命令
void glFlush(void);
原文地址:https://www.cnblogs.com/Ziyo/p/9716443.html