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
OpenGL及GLUT---------------函数整理相关推荐
- OpenGL中常用的 GLUT 函数
GLUT函数说明 一.初始化 void glutInit(int* argc,char** argv) 这个函数用来初始化GLUT库.对应 main 函数的形式应是: int main(int arg ...
- [OpenGL笔记]glut入门(1)
开头 写在开头,推荐看一下这篇文章涨涨知识OpenGL库文件的区别(glut/glew/glfw/glad/freeglut)和环境配置 不知道从哪扒来的glut的参考文档 代码初识 其实之前学的是g ...
- OpenGL的API函数使用手册
OpenGL的API函数使用手册 (一)OpenGL函数库 格式: <库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有 gl.glu.a ...
- OpenGL教程——GLUT初始化
在这个部分我们将在我们的程序里建立一个main函数,这个main函数将完成必须的初始化和开启事件处理循环.所有的GLUT函数都有glut前缀并且那些完成一些初始化的函数有glutInit前缀.你首先要 ...
- OpenGL ES glut glew glfw glad freeglut
目录 一.简介 1.freeglut 2.glew 3.glut 4.glfw 5.glad 二.分类 1.窗口管理 2.函数加载 三.组合使用 1.freeglut + glew 2.glfw + ...
- OpenGL,GLUT,FreeGLUT,GLFW,GLEW,GLAD,GL3W,GLAD,GLM,GLSL的区别详解
OpenGL,GLUT,FreeGLUT,GLFW,GLEW,GLAD,GL3W,GLAD,GLM,GLSL的区别详解 很多同学在初学计算机图形学时,都要去配置OpenGL环境,其中涉及多个库的选择和 ...
- Mac平台配置OpenGL(glut,glew)
//oepngl库 opengl原生库 gl* 随opengl一起发布 opengl实用库 glu* 随opengl一起发布 opengl实用工具库glut glut* 需要下载配置安装 ...
- OpenGL像素阵列函数、光栅操作和字符函数
一.OpenGL像素阵列函数:OpenGL中有两个函数可用于定义矩阵阵列的形状图案.一个是位图,另一个是像素图. (1).OpenGL位图函数 void glBitmap(GLsizei width, ...
- opengl之glut学习笔记(含学习资料来源,对于没头绪,缺少glut资料的有很大帮助)
目录 单词学习 环境搭建 opengl函数样式 初始化-主函数部分 名词解释 opengl基本图形绘制 点 线 多边形 示例: 窗口改变 动画 键盘控制 场景漫游 学习资料有: 1.Microsoft ...
- OpenGL ES glut 下载和使用
目录 一.glut 简介 二.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推 ...
最新文章
- 容器环境红队手法总结
- 查看终端进程是否死掉技巧
- 四则运算个人项目反思总结
- 大地震前有三个明显征兆:1.井水异常2.牲畜反应异常3.专家出来辟谣。但是细心网友指出,第三和第二重复了。...
- 中望cad2018中文版
- 【iBoard电子学堂】【iCore双核心板】资料光盘A盘更新,版本号为A6
- switch分解试验部分-LAB4:VLAN VTP设置
- 自然语言处理真实项目实战(20170822)
- centos lamp
- Python多项逻辑回归用LogisticRegression识别英文字母数据集letter-recognition.data
- JavaScript高级程序设计[美]Nicholas C.Zakas著 读书笔记(三)
- 2020年中国IT咨询行业市场现状及发展趋势
- 基于STM32和ATH20实现OLED显示温湿度
- 中国移动OneOS 3.0物联网操作系统正式发布
- golang性能调优工具pprof的使用
- 华为鸿蒙系统HarmonyOS学习之十一:华为个人开发者账号注册步骤及方法
- 自行车安全交叉路口设计
- UnityVR--小程序3--金色的子弹2
- Linux配置NAT网络
- KEPServer软件使用
热门文章
- 目标目录非空,而且似乎未包含以前编译的应用程序。请手动删除它,或选择其他目标目录...
- lg android tv 手机助手,LG电视安装第三方APP教程 仅针对安卓电视
- 大型网站SEO该怎么引爆流量_如何学网络推广
- Oracle--替代触发器(INSTEAD OF)
- linux设置dns简单的,Linux下的DNS简单配置
- digispark使用
- Linux下制作动图的软件,GIF制作教程 | 如何制作高清动图_什么值得买
- Cannot resolve the name 'repository:auditing-attributes' to a(n) 'attribute grou
- 5线上模式刷2亿bug_GTA5还想冲销量?玩家利用BUG刷钱,遭受比封号更严厉惩罚
- 浅谈Es6中import * as xxx from几种基本用法