OpenGL及GLUT---------------函数整理
Posted ziyo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:指定缓冲区对象的名称
11
// 创建和初始化缓冲区对象的数据存储 void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage); // target:绑定的缓冲区对象类型 // size:指定缓冲区对象的新数据存储的大小(以字节为单位) // data:用于初始化的数据的指针,没有数据则为NULL // usage:指定使用的数据存储的用例模式
12..(OpenGL2.1)
// void glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
以上是关于OpenGL及GLUT---------------函数整理的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 一个OpenGL / GLUT代码模板。用于OpenGL / GLUT源代码的代码模板
win8.1中vs2015配置opengl环境,那个glut.lib和glut32.lib放哪里啊