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);