简单的OpenGL程序

前言:
GL:OpenGL库
GLU:OpenGL工具函数库
GLUT:OpenGL使用工具库

GL

OpenGL是一个状态机,尤其是如果你使用固定功能的线管。每个状态变量都有一个默认值。在任何时候都可以向系统查询每个状态变量的当前值:

  • glGetBooleanv()
  • glGetDoublev()
  • glGetIntegerv()
  • glGetfloatv()
  • glGetpointerv()
  • glIsEnabled()
GLU

包含了一些函数,它们利用底层的OpenGL函数来执行一些特定的任务,例如设置特定的矩阵,多边分格化以及表面渲染等

GLUT

GLUT(英文全写:OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O

OpenGl实用工具库是一个独立于窗口系统工具的工具包,它的目的是隐藏不同窗口API所带来的复杂性OpenGL包含了很多的渲染函数,但是它们的设计目的是独立于任何窗口系统或操作系统。因此它们没有包含打开窗口或者从键盘鼠标读取事件的函数。但是绝大多数需要用户的交互。因此,使用GLUT来简化打开窗口,检测输入等任务。

GLUT还包含了一些函数,用于创建一些更为复杂的三维物体,例如球体,圆环面,茶壶,十二面体,圆锥体。
以下是一些小的子集供参考:

  • 窗口函数
    1. glutInit( )
    2. glutInitDisplayMode( )
    3. glutInitWindowPosition()
  • 显示回调函数
    1. glutDisplayFunc( )
  • 运行程序
    1. glutMainLoop( ):启动程序。所有已经创建的窗口将会在这时显示,对这些窗口的渲染也开始生效。
main函数

main函数一般由建立OpenGL系统的操作组成。有两种实现方法。

  • 第一:通过GLUT创建并设置用于显示的系统窗口。
  • 第二:通过定义回调函数,建立事件处理系统。回调函数是事件发生时使用的,并初始化模型与显示环境。(回调函数:就是通过一个函数指针来调用的函数,把函数的指针作为参数传递给另一个函数,我们说这就是回调函数。)
  • 回调函数类型
    1. 初始化函数:doMyinit()
    2. 改变窗口回调函数:reshape()
    3. 显示回调函数:display()
    4. 空闲回调函数:idle()
  • display()函数十分重要,它用于创建所定义的模型显示。
GLUT的事件驱动

GLUT完全通过事件来操作。对程序需要处理的每个事件,都需要在main()函数中定义相应的回调函数。
回调函数是当相关事件发生时,系统事件处理程序调用的函数。

主事件循环启动后,改变窗口(reshape)事件生成窗口,显示(display)事件调用自身的回调函数在窗口中绘出初始图像。
如果其他事件也定义了相应的回调函数,则当事件发生时,启动相应回调函数。
回调函数允许用户拖动窗口或改变窗口大小,当用户对窗口进行操作时被调用。

空闲(idle)回调函数在系统空闲时间重新计算图像,并在终端上显示改变的图像。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值