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---------------函数整理的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL+VS2010环境配置及遇到的问题

c_cpp 一个OpenGL / GLUT代码模板。用于OpenGL / GLUT源代码的代码模板

win8.1中vs2015配置opengl环境,那个glut.lib和glut32.lib放哪里啊

Setup VS2017 for GLUT,使用VS2017 和GLUT 运行opengl程序

Windows下配置OpenGL环境

使用键盘旋转 -- glut / OpenGL