OpenGL中常用函数

本文来自网络整理


1、gluOtho2d()和glViewport()的用法


(1)gluOtho2d()

参数分别代表(左下角x坐标,右上角x坐标,左下角y坐标,右上角y坐标)
这个函数是定义剪裁面,何谓剪裁面,我这样理解,我们是在一个无限的空间里绘图,因为坐标是可以随便指定的,随便在哪个坐标绘图,但是我们可以通过定一个剪裁面,也就是说,有一架照相机,尽管沿途风景很多,但是镜头只能拍到一定的范围,这个范围就是我们的剪裁面,我们能显示的就是这个剪裁面。

(2)glViewPort()

这个函数跟上面的相似,但是我们发现上面的指定一个剪裁面后,是在我们定义窗口的整个窗口中显示我们剪裁出来的面,而这个函数就是为了在一部分中显我们要显示的剪裁面,即,我们先取景(就是用gluOrtho2D()剪出来那个),然后在我们定义的窗口中选一个区域来显示这个取好的景。

2、 glClearColor()和glClear()的用法

(1) glClearColor(0.0,0.0,0.0,0.0);

作用是设置清除颜色,这里表示清除颜色设为黑色,glclearColor()中的四个参数中,前三个分别代表红、绿、蓝所占的分量,范围从0.0f~1.0f,最后一个参数是透明度Alpha值,范围也是0.0f~1.0f。

(2)glClear(GL_COLOR_BUFFER_BIT);

作用是实际完成了把整个窗口清除为黑色的任务,glClear()的唯一参数表示需要被清除的缓冲区。
两者在调用的时候需要成对的出现。

3、glMatrixMode()和glLoadIdentity()的用法

(1)glMatrixMode()

设置当前矩阵模式,他的可选值有:GL_MODELVIEW、GL_PROJECTION、GL_TEXTURE.
GL_MODEVIEW,对模型视景矩阵堆栈应用随后的矩阵操作。

GL_PROJECTION,对投影矩阵应用随后的矩阵操作。

GLTEXTURE,对纹理矩阵堆栈应用随后的矩阵操作。
(2)glLoadIdentity()

该函数的功能是重置当前指定的矩阵为单位矩阵。
两者在调用的时候需要成对的出现。

4、glColor3f()

在OpenGl中设置颜色,一般可以使用glColor3f(),参数应该有三个,类型是float型的。
需要注意的是,如果在glBegin()与glEnd()函数之间多次连续调用颜色函数,那么,只会显示出最后一次的颜色。
例如:
glBegin(GL_POINTS)
glColor3f(0.0, 1.0, 0.0); //绿色
glColor3f(1.0, 1.0, 0.0); //黄色
glVertex(0.25, 0.75, 0.0);
glEnd();
画出来的这条线只是黄色的。

5、glBegin()

参考:http://blog.csdn.net/fangjm2009/article/details/4697621

(1)在glBegin()和glEnd()之间可调用的函数
函数 函数意义
glVertex*() 设置顶点坐标 glPointSize( )设置点的大小
glColor*() 设置当前颜色
glIndex*() 设置当前颜色表
glNormal*() 设置法向坐标
glEvalCoord*() 产生坐标
glCallList(),glCallLists() 执行显示列表
glTexCoord*() 设置纹理坐标
glEdgeFlag*() 控制边界绘制
glMaterial*() 设置材质

(2)类型 说明

GL_POINTS 单个顶点集
GL_LINES 多组双顶点线段
GL_POLYGON 单个简单填充凸多边形
GL_TRAINGLES 多组独立填充三角形
GL_QUADS 多组独立填充四边形
GL_LINE_STRIP 不闭合折线
GL_LINE_LOOP 闭合折线
GL_TRAINGLE_STRIP 线型连续填充三角形串
GL_TRAINGLE_FAN 扇形连续填充三角形串
GL_QUAD_STRIP 连续填充四边形串

5、glFlush()

简单地说glFlush()就是强制刷新,OpenGL是使用一条渲染管线线性处理命令的,一般情况下,我们提交给OpenGL的指令并不是马上送到驱动程序里执行的,而是放到一个缓冲区里面,等这个缓冲区满了再一次过发到驱动程序里执行;很多时候只有几条指令是填充不满那个缓冲区的,就是说这些指令根本没有被发送到驱动里,所以我们要调用glFlush来强制把这些指令送到驱动里进行处理。

6、main函数中的几个函数调用

(1)void glutInit(int *argc, char **argv);
作用是初始化GLUT,默认就可以了。

(2)void glutInitWindowPosition(int x, int y);
确定窗口的位置
x- 距离屏幕左边的像素数. 默认值是 -1, 由Windows系统决定窗口的位置. 如果没有没有采用默认值, 那么你应该使用一个合适正值作为实参.
y- 距离屏幕屏幕顶端的像素数, 其余同上.

(3)void glutInitWindowSize(int width, int height);
确定窗口的大小
width - 窗口的宽度
height - 窗口的高度

(4)void glutInitDisplayMode(unsigned int mode);
mode - 指定显示模式
例如:
创建一个RGB窗口, 单缓冲以及一个深度缓冲区. 你需要把相关的常数去 OR 在一起来创建一个正确的常口
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT DEPTH);

(5)int glutCreateWindow(char *title);
title - 窗口标题
(6)void glutMainLoop(void)

让 glut 程序进入事件循环。在一个glut程序中最多只能调用一次。一旦调用,会直到程序结束才返回。



引用:http://www.cnblogs.com/BlueSky2012/archive/2012/05/21/2511475.html























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值