OpenGL游戏编程
OpenGL应用编程接口文档

OpenGL1 OpenGL 特点1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。
2.变换:OpenGL图形库的变换包括基本变换和投影变换。
基本变换有平移、旋转、变比镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。
其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。
3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Inde x)。
4.光照和材质设置:OpenGL光有辐射光(Emitted Light)、环境光(Ambient Ligh t)、漫反射光(Diffuse Light)和镜面光(Specular Light)。
材质是用光反射率来表示。
场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。
5.纹理映射(Texture Mapping)。
利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。
6.位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blendi ng)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。
以上三条可使被仿真物更具真实感,增强图形显示的效果。
7.双缓存动画(Double Buffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。
此外,利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。
从而实现了消隐算法。
2 OpenGL 工作机制∙如何在OpenGL中表示3D物体∙OpenGL 的渲染流水线∙OpenGL中函数的命名规则2.1 OpenGL中3D物体的表示在3D空间中,场景是物体或模型的集合。
在3D图形渲染中,所有的物体都是由三角形构成的。
osgqopengl 编译

osgqopengl 编译OpenSG是一个用于创建和渲染3D图形的开源库。
OpenGL是一种用于绘制2D和3D图形的图形库。
本文将讨论如何使用OpenSG和OpenGL进行图形编程。
OpenSG是一个功能强大的图形处理库,它提供了一系列用于创建和渲染3D场景的工具和函数。
它支持各种图形渲染技术,包括光照、阴影、纹理映射等。
OpenSG的设计目标是提供一个灵活、高效的图形处理框架,使开发人员能够快速创建复杂的3D场景。
OpenGL是一种用于绘制2D和3D图形的图形库。
它提供了一套用于操作图形硬件的API,可以在各种平台上实现高性能的图形渲染。
OpenGL的设计目标是提供一个可移植、灵活的图形处理框架,使开发人员能够在不同的平台上实现一致的图形效果。
使用OpenSG和OpenGL进行图形编程可以实现各种复杂的图形效果。
首先,开发人员可以使用OpenSG创建3D场景,包括物体、光源、相机等。
然后,利用OpenGL的图形操作API对场景进行渲染。
通过利用OpenGL的强大功能,开发人员可以实现各种图形特效,如阴影、反射、抗锯齿等。
此外,OpenSG还提供了一些高级功能,如物理模拟、碰撞检测等,可以帮助开发人员更加方便地创建复杂的3D场景。
在使用OpenSG和OpenGL进行图形编程时,需要了解一些基本的概念和技术。
首先,开发人员需要了解3D图形的基本原理,如坐标系统、变换、视角等。
其次,开发人员需要熟悉OpenGL的图形操作API,如绘制函数、纹理映射函数等。
此外,对于一些高级功能,如光照、阴影等,开发人员也需要了解相应的技术和算法。
在实际的图形编程中,开发人员可以根据具体的需求选择合适的工具和技术。
例如,如果需要创建一个简单的3D场景,可以使用OpenSG提供的高级函数和工具来快速实现。
如果需要实现更复杂的图形效果,可以利用OpenGL的图形操作API来自定义渲染流程。
此外,还可以使用一些其他的图形处理库和工具来辅助开发,如GLUT、GLFW等。
OpenGL编程指南

OpenGL基础图形编程- 总目录出处:中国游戏开发者[ 2001-09-20 ]作者:总目录第一章OpenGL与三维图形世界1.1 OpenGL使人们进入三维图形世界1.2 OpenGL提供直观的三维图形开发环境1.3 OpenGL称为目前三维图形开发标准第二章OpenGL概念建立2.1 OpenGL基本理解2.2 OpenGL工作流程2.3 OpenGL图形操作步骤第三章Windows NT环境下的OpenGL3.1 Windows NT下的OpenGL函数3.2 OpenGL基本功能3.3 Windows NT下OpenGL结构第四章OpenGL基本程序结构第五章OpenGL数据类型和函数名第六章OpenGL辅助库的基本使用6.1 辅助库函数分类6.2 辅助库应用示例第七章OpenGL建模7.1 描述图元7.1.1 齐次坐标7.1.2 点7.1.3 线7.1.4 多边形7.2 绘制图元7.2.1 定义顶点7.2.2 构造几何图元第八章OpenGL变换8.1 从三维空间到二维平面8.1.1 相机模拟8.1.2 三维图形显示流程8.1.3 基本变换简单分析8.2 几何变换8.2.1 两个矩阵函数解释8.2.2 平移8.2.3 旋转8.2.4 缩放和反射8.2.5 几何变换举例8.3 投影变换8.3.1 正射投影8.3.2 透视投影8.4 裁剪变换8.5 视口变换8.6 堆栈操作第九章OpenGL颜色9.1 计算机颜色9.1.1 颜色生成原理9.1.2 RGB色立体9.2 颜色模式9.2.1 RGBA模式9.2.2 颜色表模式9.2.3 两种模式应用场合9.3 颜色应用举例第十章OpenGL光照10.1 真实感图形基本概念10.2 光照模型10.2.1 简单光照模型10.2.2 OpenGL光组成10.2.3 创建光源10.2.4 启动光照10.3 明暗处理10.4 材质10.4.1 材质颜色10.4.2 材质定义10.4.3 材质RGB值和光源RGB值的关系10.4.4 材质改变第十一章OpenGL位图和图像11.1 位图11.1.1 位图和字符11.1.2 当前光栅位置11.1.3 位图显示11.2 图像11.2.1 象素读写11.2.2 象素拷贝11.2.3 图像缩放11.2.4 图像例程第十二章OpenGL纹理12.1 基本步骤12.2 纹理定义12.3 纹理控制12.3.1 滤波12.3.2 重复与约简12.4 映射方式12.5 纹理坐标12.5.1 坐标定义12.5.2 坐标自动产生第十三章OpenGL复杂物体建模13.1 图元扩展13.1.1 点和线13.1.2 多边形13.2 法向计算13.2.1 法向基本计算方法13.2.2 法向定义13.3 曲线生成13.3.1 曲线绘制举例13.3.2 曲线定义和启动13.3.3 曲线坐标计算13.3.4 定义均匀间隔曲线坐标值13.4 曲面构造13.4.1 曲面定义和坐标计算13.4.2 定义均匀间隔的曲面坐标值13.4.3 纹理曲面13.4.4 NURBS曲面第十四章OpenGL特殊光处理14.1 光照模型14.1.1 全局环境光14.1.2 近视点与无穷远视点14.1.3 双面光照14.2 光源位置与衰减14.3 聚光与多光源14.3.1 聚光14.3.2 多光源与例程14.4 光源位置与方向的控制14.5 辐射光第十五章OpenGL效果处理15.1 融合15.1.1 Alpha值与融合15.1.2 融合因子15.1.3 融合实例15.2 反走样15.2.1 行为控制函数15.2.2 点和线的反走样15.2.3 多边形的反走样15.3 雾15.3.1 雾的概论和例程15.3.2 雾化步骤第十六章OpenGL显示列表16.1 显示列表概论16.1.1 显示列表的优势16.1.2 显示列表的适用场合16.2 创建和执行显示列表16.2.1 创建显示列表16.2.2 执行显示列表16.3 管理显示列表16.4 多级显示列表第十七章OpenGL帧缓存和动画17.1 帧缓存17.1.1 帧缓存组成17.1.2 缓存清除17.2 动画【下页】【打印】【关闭】[ 字号:大·中·小]OpenGL基础图形编程- OpenGL与3D图形世界出处:中国游戏开发者[ 2001-09-20 ]作者:目录1.1 OpenGL使人们进入三维图形世界1.2 OpenGL提供直观的三维图形开发环境1.3 OpenGL成为目前三维图形开发标准1.1、OpenGL使人们进入三维图形世界我们生活在一个充满三维物体的三维世界中,为了使计算机能精确地再现这些物体,我们必须能在三维空间描绘这些物体。
opengl教程c语言版

OpenGL教程(c语言)1.第一课:说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧?但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率、16色来做吗?显然是不行的。
本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物。
OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。
1、与C语言紧密结合。
OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。
如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单。
2、强大的可移植性。
微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机)。
而OpenGL不仅用于Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。
并且,OpenGL的基本命令都做到了硬件无关,甚至是平台无关。
3、高性能的图形渲染。
OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL 提供强力支持,激烈的竞争中使得OpenGL性能一直领先。
总之,OpenGL是一个很NB的图形软件接口。
至于究竟有多NB,去看看DOOM3和QUAKE4等专业游戏就知道了。
OpenGL官方网站(英文)下面我将对Windows下的OpenGL编程进行简单介绍。
学习OpenGL前的准备工作第一步,选择一个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。
但这里我们选择Visual Studio 2005作为学习OpenGL的环境。
OpenGL编程参考手册

OpenGL编程参考手册》(pdf)电子书下载笃志说明:《OpenGL编程参考手册》中文pdf版计算机电子书下载,本书不适合OpenGL新手入门,而适合一些已有比较深厚OpenGL基础的人士开发时使用.它更类似一个词典,将所有的OpenGL 记录,分类,仅此而已.前言OpenGL是一个图形硬件的软件接口(“GL”即Graphics Library)。
这一接口包含了数百个函数,图形程序员可以利用这些函数指定设计高品质的三维彩色图像所需的对象和操作。
这些函数中有许多实际上是其他函数的简单变形,因此,实际上它仅包含大约180个左右完全不同的函数。
OpenGL 实用库(OpenGL Utility Library,GLU)和对X窗口系统的OpenGL扩展(OpenGL Extension to the X Window System,GLX)为OpenGL提供了有用的支持特性和完整的OpenGL核心函数集。
本书详细介绍了这些函数的功能。
书中各章内容如下:第1章 OpenGL简介在概念上对OpenGL作了概述。
它通过一个高层的模块图来阐述OpenGL所执行的所有主要处理阶段。
第2章命令和例程概述较详细地阐述了OpenGL对输入数据的处理过程(用点形式来指定一个几何体或用像素形式来定义一幅图像时),并告诉你如何用OpenGL函数来控制这个过程。
此外,在本章中还对GLU和GLX函数作了讨论。
第3章命令和例程一览根据OpenGL命令所完成的功能列举说明了这些命令组。
一旦了解了这些命令的功能,你就可以利用这些完整的函数原型作为快速参考。
第4章定义的常量及相关命令列举了在OpenGL中定义的常量和使用这些常量的命令。
第5章 OpenGL参考说明本书的主体部分,它包括各组相关的OpenGL命令的描述。
带参数的命令和与之一起描述的其他命令仅在数据类型方面有所不同。
每个函数的参考说明介绍了参数、命令的作用和使用这些命令时可能发生的错误。
使用OpenGL进行三维游戏引擎开发与性能优化

使用OpenGL进行三维游戏引擎开发与性能优化OpenGL是一种跨平台的图形库,广泛应用于三维游戏开发中。
本文将介绍如何利用OpenGL进行三维游戏引擎开发,并探讨如何优化性能,提升游戏体验。
一、OpenGL简介OpenGL是一种用于渲染2D和3D矢量图形的跨平台图形库。
它提供了一系列的API,可以让开发者利用GPU进行图形渲染,实现高性能的图形效果。
在三维游戏开发中,OpenGL被广泛应用于渲染场景、模型、光照等方面。
二、三维游戏引擎开发1. 游戏引擎架构在开发三维游戏引擎时,通常会采用组件化的架构。
引擎包括渲染引擎、物理引擎、音频引擎等多个模块,各模块相互独立但又相互协作,共同构建出一个完整的游戏引擎。
2. 场景渲染利用OpenGL进行场景渲染是三维游戏引擎开发的核心部分。
通过构建场景图、加载模型、设置光照等操作,可以实现逼真的三维场景呈现。
3. 用户交互用户交互是游戏引擎中至关重要的一环。
通过捕捉用户输入事件,实现玩家与游戏世界的交互,提升游戏的可玩性和趣味性。
4. 物理模拟物理引擎是实现真实物理效果的关键。
利用OpenGL进行碰撞检测、重力模拟等操作,可以让游戏中的物体表现出真实世界的物理特性。
三、性能优化技巧1. 批处理在渲染大量物体时,尽量减少状态切换次数,将相邻物体合并成一个批次进行渲染,可以显著提升性能。
2. 纹理压缩使用纹理压缩技术可以减小纹理占用内存大小,降低GPU负担,提高渲染效率。
3. GPU剔除利用OpenGL提供的剔除技术,可以在渲染前排除掉不可见的物体,减少不必要的渲染计算,提升帧率。
4. 着色器优化合理设计着色器程序结构,避免过多分支和循环语句,优化着色器代码可以提高渲染效率。
四、案例分析:《夺宝奇兵》游戏开发以《夺宝奇兵》为例,该游戏采用了基于OpenGL的三维引擎进行开发。
通过对场景进行精细化设计、优化纹理资源、合理设置光照效果等手段,成功打造了一个高品质的三维冒险游戏。
OpenGL入门教程(精)

4、把解压得到的 glut.dll 和 glut32.dll 放到操作系统目录下面的 system32 文件夹内。(典型的位置为: C:\Windows\Sy st em32) 第三步,建立一个 OpenGL 工程 这里以 VisualStudio2005 为例。 选择 File->New->Project,然后选择 Win32 Console Application,选择一个名字,然后按 OK。 在谈出的对话框左边点 Application Settings,找到 Empty project 并勾上,选择 Finish。 然后向该工程添加一个代码文件,取名为“OpenGL.c”,注意用.c 来作为文件结尾。 搞定了,就跟平时的工程没什么两样的。 第一个 OpenGL 程序
在 glutDisplayFunc 函数中,我们设置了“当需要画图时,请调用 myDisplay 函数”。于是 myDisplay 函数就 用来画图。观察 myDisplay 中的三个函数调用,发现它们都以 gl 开头。这种以 gl 开头的函数都是 OpenGL 的标准函数,下面对用到的函数进行介绍。 1、glClear,清除。GL_COLOR_BUFFER_BIT 表示清除颜色,glClear 函数还可以清除其它的东西,但这里 不作介绍。 2、glR ect f,画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标。 3、glFlush,保证前面的 OpenGL 命令立即执行(而不是让它们在缓冲区中等待)。其作用跟 fflush(stdout) 类似。
OpenGL 入门教程
1.第一课:
说起编程作图,大概还有很多人想起 TC 的#include < graphics.h>吧? 但是各位是否想过,那些画面绚丽的 PC 游戏是如何编写出来的?就靠 TC 那可怜的 640*480 分辨率、16 色来做吗?显然是不行的。
《《OpenGL ES2.0游戏开发》》

《《OpenGL ES2.0游戏开发》》随着智能手机和平板电脑的普及,游戏开发成为了一个新兴的领域。
而OpenGL ES2.0技术的出现,为移动游戏开发带来了全新的可能性。
本文将详细介绍OpenGL ES2.0游戏开发的相关知识。
一、OpenGL ES2.0简介OpenGL ES是OpenGL标准的子集,它专门为嵌入式设备而设计,可以满足低功耗、小尺寸和高性能的要求。
OpenGL ES2.0是目前最新的版本,它在图形渲染、着色器编程和纹理映射等方面都有了很大的改进和升级。
二、OpenGL ES2.0的编程语言OpenGL ES2.0使用的是GLSL语言进行着色器编程。
GLSL是一种面向显卡编程的语言,它可以帮助我们高效地控制图形渲染的过程。
而且,GLSL语言非常灵活,可以通过编写各种着色器来实现不同的图形渲染效果。
三、OpenGL ES2.0开发工具目前,市面上有许多OpenGL ES2.0开发工具可供选择。
其中比较常用的有:1. Eclipse:Eclipse是一款免费的Java开发工具,可以通过安装插件来实现OpenGL ES2.0的开发。
2. Android Studio:Android Studio是谷歌官方推出的Android平台开发工具,它集成了OpenGL ES2.0的开发环境,非常方便。
3. Visual Studio:Visual Studio是一款非常流行的Windows平台开发工具,可以通过安装插件来实现OpenGL ES2.0的开发。
四、OpenGL ES2.0的基本图形渲染过程OpenGL ES2.0的基本渲染过程可以分为以下几个步骤:1. 创建着色器和程序对象:着色器是OpenGL ES2.0实现图形渲染的核心,程序对象则将多个着色器组合在一起形成一个完整的渲染过程。
2. 创建缓冲区对象:缓冲区对象用于存放数据,包括顶点坐标、法向量、纹理坐标等。
3. 加载纹理:通过加载位图等图像资源,在OpenGL ES2.0中创建纹理对象,用于贴图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22
模式 GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP
图元类型
将指定的各个顶点用于创建单个的点 将指定的顶点用于创建线段。每两个顶点指定一条单独的线段。如果顶点 个数是奇数,则忽略最后一个 将指定的顶点用于创建线条。第一个顶点之后的每个顶点指定的是线条延 伸到的下一个点 特性和GL_LINE_STRIP相似,只不过最后一条线段是在指定的最后一个和 第一个顶点之间绘制。典型情况下,这用于绘制那些可能违反了 GL_POLYGON用法规则的封闭区域 将指定的顶点用于构造三角形。每三个顶点指定一个新三角形。如果顶点 个数不是三的倍数,多余的顶点将被忽略 将指定的顶点用于创建三角条。指定前三个顶点之后,后继的每个顶点与 它前面两个顶点一起用来构造下一个三角形。每个顶点三元组(在最初的 组之后)会自动重新排列以确保三角形绕法的一致性。 将指定的顶点用于构造三角扇形。第一个顶点充当原点,第三个顶点之后 的每个顶点与它的前一个顶点还有原点一起组合。 每四个顶点一组用于构造一个四边形。如果顶点个数不是四的倍数,多余 的顶点将被忽略
பைடு நூலகம்
#include <windows.h> #include <glut.h> #include<qgl.h> // 函数RenderScene用于在窗口中绘制需要的图形 void RenderScene(void) { //用当前清除色清除颜色缓冲区,即设定窗口的背景色 glClear(GL_COLOR_BUFFER_BIT); //设置当前绘图使用的RGB颜色 glColor3f(1.0f, 0.0f, 0.0f); //使用当前颜色绘制一个填充的矩形 glRectf(100.0f, 150.0f, 150.0f, 100.0f); //刷新OpenGL命令队列 glFlush(); }
// 函数ChangeSize是窗口大小改变时调用的登记函数 void ChangeSize(GLsizei w, GLsizei h) { if(h == 0) h = 1; //设置视区尺寸 glViewport(0, 0, w, h); // 重置坐标系统,使投影变换复位 glMatrixMode(GL_PROJECTION); glLoadIdentity(); // 建立修剪空间的范围 if (w <= h) glOrtho (0.0f, 250.0f, 0.0f, 250.0f*h/w, 1.0f, -1.0f); else glOrtho (0.0f, 250.0f*w/h, 0.0f, 250.0f, 1.0f, -1.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }
第五步,执行程序
OpenGL初步编程
OpenGL库和头文件:
动态库:opengl32.dll glu32.dll glut32.dll 放入 windows\system32目录下 静态库:opengl32.lib glu32.lib glut32.lib放入qt 安装目录的LIB目录下 头文件:gl.h glu.h glut.h放入qt安装目录的 Include\QtOpengGL文件夹下
最终目标
• 熟悉C/C++语言 • 能够用C/C++语言解决一个实际问题 • 掌握编程思路
OpenGL简介
OpenGL(Open Graphics Library,开放图形
库),是一个二维/三维的计算机图形和模型库,它源
于SGI(Silicon Graphics inc.)公司为其图形工作站开
发的IRIS GL,在跨平台移植过程中发展成为OpenGL。
GL_TRIANGLES
GL_TRIANGLE_S TRIP GL_TRIANGLE_F AN GL_QUADS
GL_QUADS_STR IP
GL_POLYGON
2014-1-3
将指定的顶点用于构造四条形边。在第一对顶点之后,每对顶点定义一个 四边形。和GL_QUADS的顶点顺序不一样,每对顶点以指定顺序的逆序使 用,以便保证绕法的一致 将指定的顶点用于构造一个凸多边形。多边形的边缘决不能相交。最后一 个顶点会自动连接到第一个顶点以确保多边形是封闭的 23
OpenGL概述
• 从程序开发人员的角度来看,OpenGL是一 组绘图命令的API集合。利用这些API能够 方便地描述二维和三维几何物体,并控制 这些物体按某种方式绘制到显示缓冲区中。 OpenGL的API集提供了物体描述、平移、 旋转、缩放、光照、纹理、材质、像素、 位图、文字、交互以及提高显示性能等方 面的功能,基本涵盖了开发二、三维图形 程序所需的各个方面。
glut常用函数2
• glutWindowPosition
– void glutInitWindowPosition(int x, int y); – 功能:定义要创建窗口出现在屏幕中的位置 – 参数:x窗口出现的x轴坐标。
• glutInitWindowSize
– void glutInitWindowSize(int width, int height); – 功能:创建窗口的大小
OpenGL中的颜色
• 在OpenGL中,一种颜色用红、绿、蓝成分 的混合来表示,每种成分的值范围是0.0到 1.0 。
OpenGL初步编程
在Windows下开发和创建一个OpenGL程序的 基本步骤:
第一步,选择一个编译环境,如QtCreator 第二步,安装GLUT工具包 第三步,建立一个OpenGL工程 第四步,编译连接
//函数SetupRC用于初始化,常用来设置场景渲染状态 void SetupRC(void) { // 设置窗口的清除色为白色 glClearColor(1.0f, 1.0f, 1.0f, 1.0f); }
void main(void) { //初始化GLUT库OpenGL窗口的显示模式 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 创建一个名为GLRect的窗口 glutCreateWindow("GLRect"); // 设置当前窗口的显示回调函数和窗口再整形回调函数 glutDisplayFunc(RenderScene); glutReshapeFunc(ChangeSize); SetupRC(); //启动主GLUT事件处理循环 glutMainLoop(); }
OpenGL图形函数定义独立于任何程序设计语言,在 各种编程语言中,如C,C++,FORTRAIN,Ada和 Java等,都可以调用OpenGL的库函数。
OpenGL组成
OpenGL是一种API,包括了多个图形函数, 主要由以下函数库组成。 (1)OpenGL核心库:gl (2)OpenGL实用程序库: glu (3)OpenGL编程辅助库:aux (4)OpenGL实用程序工具包(OpenGL utility toolkit,GLUT):glut (5)Windows专用库:wgl (6)Win32 API函数库
目前, OpenGL已成为开放的国际图形标准。
6
技术储备
• C语言基础包括常见的函数、指针、数组、 字符串、结构体等 • C++语言基础包括面向对象编程思想、类、 对象、继承、多态 • 常见的数据结构包括链表、队列、哈希表 • OPENGL API函数的使用 • 跨平台QtCreator开发环境的使用
glut常用函数3
• glutReshapeFun
– glutReshapeFunc(void (*func)(int width, int height)); – 功能:窗口重绘函数,单窗口大小发生变化时必须重新绘制窗口, func函数指针就是重绘的函数
• glutMainLoop
– glutMainLoop(void); – 功能:进入GLUT事件处理循环,让所有的与“事件”有关的函数 调用无限循环
用OpenGL绘图
画点、线和面 glBegin(GL_POINTS); glVertex3f(0.0f,0.0f,0.0f); glVertex3f(10.0f,10.0f,10.0f); glEnd(); 计算机中的图元只是把一组顶点或顶点列表解释 为屏幕上绘制的某些形状,而顶点是用函数 glVertex3f来定义,该函数中的参数指明定义点的x、 y和z坐标。
• glutPostRedisplay
– glutPostRedisplay(void); – 功能:功能类似于直接调用显示回调函数display(),但该函数允 许实现在对何时真正需要调用显示回调函数而作出决策时,变得 更加“智能化”。在GLUT遍历整个事件循环时,必然会检索到许 多要求窗口重绘的事件。如果每次都去直接调用显示回调函数, 窗口必然会被多次绘制。而使用glutPostRedisplay()之后,就使得 在遍历消息队列的整个过程中,只对窗口重绘一次
OpenGL中的数据类型
2014-1-3
11
函数命名约定
OpenGL函数都遵循一个命名约定,即采用 以下格式: <库前缀><根命令><可选的参数个数><可 选的参数类型> 例如函数glColor3f(…),gl表示这个函数来 自库gl.h,color表示该函数用于颜色设定, 3f表示这个函数采用了三个浮点数参数。
在绘制三角形的过程中,三个顶点将三角形封闭的过程是有序 的,即三角形的构成路径具有方向性,我们把指定顶点时顺序和方向的 组合称为“绕法”。 在一个全部由不透明封闭表面组成的场景中,背面多边形是永 远看不见的。剔除这些不可见的多边形对于加速图形的渲染有很大的益 处。开启和关闭剔除功能 可以调用带GL_CULL_FACE参数的glEnable 和glDisable函数。默认剔除功能是关闭的。如果一个虚构的对象的顶点 是按照多边形内部 顺时针的方向进行绘制的,那么可以称这个多边形基 于窗口坐标的投影是顺时针的。反之,则为逆时针。 glFrontFace就是用来指定多边形在窗口坐标中的方向是逆时针 还是顺时针的。GL_CCW说明逆时针多边形为正面,而GL_CW说明顺 时针多边形为正面。默认是逆时针多边形为正面