OpenGL概述

OpenGL是个跨平台的针对硬件的编程语言。Core库函数一般以gl开头,OpenGL Utiliy Library函数一般以glu开头,常量以GL_开头,函数结尾可以以数目和数据类型结尾(如glColor3f(0.3,0.3,0.3,1))。

 

状态机

OpenGL是个状态机,它的状态和模式一直有效,直到被改变。它的状态可以用glEnable()、glDisable()来开启和关闭。状态的保存和恢复,可以用glPushAttrib() 和glPopAttrib()来实现。

 

glBegin()和glEnd()

OpenGL的元素绘制,用glBegin()和glEnd()来指定用到的顶点。如下面所示。


glBegin(GL_TRIANGLES);
    glColor3f(1, 0, 0);     // set vertex color to red
    glVertex3fv(v1);        // draw a triangle with v1, v2, v3
    glVertex3fv(v2);
    glVertex3fv(v3);
glEnd();

OpenGL可以绘制的元素有10种:GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, and GL_POLYGON。在glBegin()和glEnd()之间,只有部分命令可以用,如这些:glVertex*(), glColor*(), glNormal*(), glTexCoord*(), glMaterial*(), glCallList()。

 

glFlush()和glFinish()

一般OpenGL命令不会立即执行,一般会存在buffer中,直到buffer满之后在一次发送出去执行,如网络的buffer或者图形加速器自己的buffer。

使用glFlush()可以一次性将buffer里的命令发送出去执行,而不必等buffer满。glFlush()会立即返回,不必等之前的OpenGL命令执行完。

glFinish()也是一次性将buffer里的命令发送出去执行,但它不会立即返回,而是等前面的OpenGL命令执行完才返回,这可以用来测命令执行的时间消耗。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值