OpenGL编程指南读书笔记-第一章

第一章  GL函数:


glClear(GLbitfield mask) -- 清除viewport的缓冲区


可以使用 | 运算符组合不同的缓冲标志位,表明需要清除的缓冲,例如glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)表示要清除颜色缓冲以及深度缓冲,可以使用以下标志位

  • GL_COLOR_BUFFER_BIT:     颜色缓冲

  • GL_DEPTH_BUFFER_BIT:     深度缓冲

  • GL_ACCUM_BUFFER_BIT:    累积缓冲

  • GL_STENCIL_BUFFER_BIT:  模板缓冲




glColor3f(GLfloat red,GLfloat green,GLfloat blue) --  设置当前颜色


glColor3f(1.0, 0.0, 0.0);  //设置当前色为红色

glColor3f(0.0, 1.0, 0.0);    //设置当前色为绿色




glBegin(GLenummode) && glEnd(void)


函数限定了一组或多组图元的定点定义

mode:创建图元的类型。可以是以下数值

  • GL_POINTS:把每一个顶点作为一个点进行处理,顶点n即定义了点n,共绘制N个点

  • GL_LINES:把每一个顶点作为一个独立的线段,顶点2n-1和2n之间共定义了n条线段,总共绘制N/2条线段

  • GL_LINE_STRIP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,第n和n+1个顶点定义了线段n,总共绘制n-1条线段

  • GL_LINE_LOOP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,然后最后一个顶点和第一个顶点相连,第n和n+1个顶点定义了线段n,总共绘制n条线段

  • GL_TRIANGLES:把每个顶点作为一个独立的三角形,顶点3n-2、3n-1和3n定义了第n个三角形,总共绘制N/3个三角形

  • GL_TRIANGLE_STRIP:绘制一组相连的三角形,对于奇数n,顶点n、n+1和n+2定义了第n个三角形;对于偶数n,顶点n+1、n和n+2定义了第n个三角形,总共绘制N-2个三角形

  • GL_TRIANGLE_FAN:绘制一组相连的三角形,三角形是由第一个顶点及其后给定的顶点确定,顶点1、n+1和n+2定义了第n个三角形,总共绘制N-2个三角形

  • GL_QUADS:绘制由四个顶点组成的一组单独的四边形。顶点4n-3、4n-2、4n-1和4n定义了第n个四边形。总共绘制N/4个四边形

  • GL_QUAD_STRIP:绘制一组相连的四边形。每个四边形是由一对顶点及其后给定的一对顶点共同确定的。顶点2n-1、2n、2n+2和2n+1定义了第n个四边形,总共绘制N/2-1个四边形

  • GL_POLYGON:绘制一个凸多边形。顶点1到n定义了这个多边形。




glVertex3f(GLfloat x,GLfloat y,GLfloat z) -- 画顶点


glVertex3f(0.25, 0.25, 0.0);





glFlush(void) -- 强制刷新缓冲,保证图形命令被执行,而不是留在缓冲区中等待其他OpenGL命令


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



glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha) -- 使用红,绿,蓝以及AFA值来清除颜色缓冲区的,并且都被归一化在(0,1)之间的值,其实就是清空当前的所有颜色。


glClearColor(0.0, 0.0, 0.0, 0.0);




glMatrixMode(mode) -- 指定哪一个矩阵是当前矩阵


glMatrixMode设置当前矩阵模式:

  • GL_MODELVIEW,对模型视景矩阵堆栈应用随后的矩阵操作.

  • GL_PROJECTION,对投影矩阵应用随后的矩阵操作.、

  • GL_TEXTURE,对纹理矩阵堆栈应用随后的矩阵操作.

与glLoadIdentity()一同使用




glLoadIdentity(void) -- 重置当前指定的矩阵为单位矩阵.在语义上,其等同于用单位矩阵调用glLoadMatrix


根据矩阵变换本质的理解,glLoadIdentity并不是简单的理解为将坐标归为世界坐标的原点。而是每次建立顶点的时候,都是以当前物体的中心作为世界的原点的(换句话说,也就是上一轮物体变换之后,原点的位置作为新的物体的中心)。之后再进行各种变换而形成物体的移动、缩放、旋转等效果。从本质上讲,glLoadIdentity并不会改变世界坐标的原点位置,而仅仅是让“栈顶矩阵归位”。但它导致了下一轮顶点变换时,感觉上是以新的物体中心为世界原点的效果!




glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far) -- 这个函数描述了一个平行修剪空间


这种投影意味着离观察者较远的对象看上去不会变小(与透视投影相反)。在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,下边和上边是最小和最大的Y值,近处和远处是最小和最大的Z值。 正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。



glShadeModel(GLenum mode) -- 设置着色模式


mode:

  • GL_SMOOTH : 在使用光滑着色时(即GL_SMOOTH),独立的处理图元中各个顶点的颜色。对于线段图元,线段上各点的颜色将根据两个顶点的颜色通过插值得到。对于多边形图元,多边形内部区域的颜色将根据所有顶点的颜色插值得到

  • GL_FLAT :  采用恒定着色时(即GL_FLAT),使用图元中某个顶点的颜色来渲染整个图元





glRotatef(GLfloat angle,  GLfloat x,  GLfloat y,  GLfloat z) -- 使用一个旋转矩阵乘以当前矩阵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值