基于openGL的三维地形场景的生成
基于OpenGL的三维模拟地形的实现

法 向量 N=N+ 2N+ 44 r( lN + 3N ) 。 /
N
使用 D M( 字 高程 模 型 ) 式 的地 形 高度 数 据 , E 数 格 即 按矩形 网格采样 的地形 高度数值[ 1 1 。
OeG p n L是 S I 司开发 的 。可独 立于操 作 系统 G 公 和硬 件环境 的三维 图形库 。 强大 的图形 操作 功能 和跨
面是最 小 的图形基元 . 于三角 面 的各 种几何 算法 最 基
简单 、 可靠 , 最 构成 的系统性 能最优 。又 由于 O e G pn L 只 能处理 凸多边形 . 因此常常选 用三 角面构 造地 形模 型。 三角 形的 明亮 程度 除取决 于光源 和明暗处理 方式
代 计 成是 三维地形 网格点 的高程值 。 而三维地 形 的颜色也 算 可 以用原始记 录 的相 关函数来 表示 ,采用 纹理 映射 。 机
环并传递 这些 多边形 。 那速 度是很 慢 的。 因此为 了加 快 显 示速 度 , 以使 用 空间 分割 , 可 只对 摄像 机 漫游 时 看见 的多边形 所在 区域进行作 画 。 在调用 显示 区域之 前 , 过旋 转 、 移 、 照 、 质 的设 定来 实 现需要 的 通 平 光 材
维普资讯
实 践 与经 验
蒋 亚 军
( 湖南科 技学 院计算 机与信 息科 学系 , 永州 4 5 0 ) 20 6
摘 要 :在 Wid ws 台上 。 用 Vi a C+ no 平 利 s l +集成 环境 , u 结合 Op n L图形 函数库构 建三 雏模拟 地形 , eG
总
第
二
外 , 受到点 与面 的法 向量 的影响 。一般 点 的法 向量 还 取 值为其 周 围法 向量 的均值四 如 图 1 。 所示 , 顶点 P的
基于OpenGL的三维地形可视化研究

Re e r h o t e Viu l a i n o D p g a y Ba e n e GL s a c n h s a i to f3 To o r ph s d o Op n z
ZH ANG a - i Xi n we
( h n o g Z e g u n Ge ma isEn iern . d , ia 5 0 4,Chn ) S a d n h n y a o t gn eigCo Lt Jn n2 0 1 c ia
据 De ua 三角网的构 网规则 生成三角 网。De ua l ny a l ny三角形 a
定义为 : 组成三角 网的每个 三角形不包 含数据点集 中除构成
该三角形三顶点 以外 的任何其 它点 , D l ny 即 e u a 三角 网能最 a
信息 , 其数据冗余少 , 简化数据可能 带来 的失 真也 较小 , 以 所
本 文建立三维地形模型中运用 的是不规则三角网( I 。 TN)
化、 仿真等 内容 的学科 , 它属 于计 算 机 图形 学 的一 个分 支 。 近年来 , 由于计算机 科学 、 算机 图形学 以及现 代数 学理论 计
研 究和 讨 论 。通 过 实验 数 据 模 拟 , 实现 了通 过 键 盘 控 制 人 机 交互 的地 形 实 时动 态显 示 , 实现 了三 维 地 形 可视 化 。
关键词 : pn ; 维 ; O eGL 三 可视 化 中图 分 类 号 : 3 14 TP 9 . 1 文献标识码 : A 文 章 编 号 :0 85 9 (0 8 0—0 50 10 —6 6 20 )20 7—2
张先 为
( 东正元地 理信 息工程有 限责任公 司, 东 济 南 20 1) 山 山 5 0 4
基于OpenGL的三维图形绘制实验

基于OpenGL的三维图形绘制实验基于OpenGL的三维图形绘制实验⽬录实验题⽬:交互图形程序设计基础实验 (3)1.实验⽬的 (3)2.实验内容 (3)2.1 实验内容 (3)2.2 实验任务 (3)3.实验过程 (4)3.1 预处理 (4)3.3 主要函数说明 (5)3.4 过程描述 (6)3.5 运⾏截图 (7)4.实验结果 (7)5.实验体会 (7)实验题⽬:交互图形程序设计基础实验1.实验⽬的1)理解并掌握三维基本图形数据结构表⽰⽅法。
2)掌握编写OpenGL图形程序的基本⽅法.3)掌握OpenGL基本图形表⽰及绘制。
2.实验内容2.1 实验内容基于OpenGL的三维图形绘制实验⽬的是掌握图形信息的表⽰、数据的组织,在此基础上基于OpenGL绘制出三维图形。
实验内容包括OpenGL编程环境搭建、OpenGL程序结构、基本数据类型、核⼼函数等的使⽤;基本图形的绘制(点、线段、折线、闭合折线、多边形、三⾓形、三⾓扇、三⾓条带、四边形、四边形条带等)及图形属性控制(线宽、颜⾊、线型、填充样式等);对指定的若⼲三维模型进⾏建模、绘制,在⼀个程序框架下实现,提交1次程序,1份实验报告。
2.2 实验任务1、使⽤Visual C++建⽴⼀个单⽂档(SDI)程序,完成OpenGL绘制框架程序的设计。
在此基础上参照提供的资料,定义绘制函数,基于⾃定义的若⼲点坐标与颜⾊,分别绘制绘制点、线段、不闭合折线、闭合折线、多边形、三⾓形、四边形、三⾓扇、三⾓条带、四边形条带。
2、使⽤1中建⽴的程序框架,完成如下任务:(1)绘制正棱柱(底⾯多变形的边数及⾼度可以通过对话框输⼊)(2)正棱锥(底⾯多变形的边数及⾼度可以通过对话框输⼊)(3)正棱台(底⾯多变形的边数、台⾼、锥⾼可以通过对话框输⼊)注意模型坐标系的选择和顶点坐标的计算,每个图形的绘制单独写成函数。
加⼊菜单绘制三、四、五、六边的情况,其他边数情况从弹出对话框中输⼊参数,然后绘制。
基于OpenGL的城市三维模型可视化研究

但 O  ̄G w L已对其进行 了处理 , 编程者 可 以利 用几个 函数 就可 使
以完成纹理贴图 。执行纹理贴 图的步骤可 以概括为 : 定义纹理 贴
图 1 O0n eGL的 工 作 流 程 图
图, 控制纹 理 , 明纹 理贴图方 式 , 说 定义纹 理坐标 与几何 坐标 等。
文章编号:0962{070—38 2 10—8520 }1 5- 0 0
基 于 Op n e GL的城 市 三维 模 型 可视 化 研 究
岳 朝 瑞
摘 要: 在介绍基于 O  ̄G w L的三维景观 显示原理和 关键 技术的基 础上, 对地形 、 地物的可视化进行‘ 了分析 , 究 了对三 研 维场景实 时目标选取 的方法和技术 。 关键词 : 可视化 , 三维模型 , w L O  ̄G
中图 分 类 号 作流 程及 三维 图像 生成 原理 eG
Opn L的工作流程 图如 图 1 eG 所图 。
现实与虚拟现实的结合 。三维景观模 型进行可视 化的过程 , 涉及 大量的诸如坐标变换 、 法向量 、 反走 样 、 照 、 光 材质 、 理映射等 图 纹
形编程细节 。下面仅就三维场景 的纹理映射 、 动态 漫游和交互操
作的有关技术 和实现做一探讨 。
2. 纹 理 映 射 1
为了能够 真实地表现景观特征 , 必须进 行纹理 映射。纹 理映 射的基本 思路 是把 纹理影像 “ 到 由几何 数据 所构 成的三 维表 贴” 面。纹理 映射的关 键是实 现纹 理与 几何 多边形 顶点 的三维 空 间
问题 , pn L提供 了多种 映射方 式 , 中包括纹 理 滤波 、 复与 O eG 其 重
基于OpenGL的三维动画效果设计与实现

基于OpenGL的三维动画效果设计与实现OpenGL是一种跨平台的图形库,广泛应用于计算机图形学、游戏开发和虚拟现实等领域。
在OpenGL的基础上,可以实现各种精美的三维动画效果,如逼真的光影效果、自然的物理模拟和华丽的特效等。
本文将介绍如何基于OpenGL实现三维动画效果。
一、OpenGL简介OpenGL(Open Graphics Library)是一种跨平台的图形库,可以用于开发高性能的3D图形应用程序。
它提供了一套标准的API,程序员可以使用OpenGL库里的函数来绘制各种图形,包括点、线、三角形等。
OpenGL的主要优点是跨平台,程序可以在不同的操作系统和硬件上运行,并且不需要对程序做太多的修改。
二、OpenGL开发环境在开始OpenGL开发之前,需要配置正确的开发环境。
OpenGL的开发环境包括编程语言、OpenGL库、窗口系统和OpenGL的开发工具等。
编程语言:OpenGL支持多种编程语言,如C/C++、Java、Python等。
其中,C/C++是最常用的开发语言,因为它可以直接调用OpenGL的函数库。
OpenGL库:OpenGL库是开发OpenGL程序时必须的工具,它包含了OpenGL 的所有函数和常量。
窗口系统:OpenGL需要一个可视化的窗口系统,用来显示图形界面。
常用的窗口系统有Windows、Linux和MacOS等。
开发工具:开发OpenGL程序需要使用各种IDE和编辑器,如Visual Studio、CodeBlocks和Eclipse等。
三、实现三维动画效果的基础知识1.三维坐标系OpenGL使用右手坐标系表示三维坐标系,其中x轴向右,y轴向上,z轴向外。
2.矩阵变换OpenGL可以通过矩阵变换来实现图形的移动、旋转、缩放等操作。
常用的变换矩阵包括平移矩阵、旋转矩阵和缩放矩阵。
3.光照模型光照模型是OpenGL中重要的概念之一,它用来计算光源对物体的影响。
其中,主要包括光源的位置、光线的颜色和强度等因素。
利用OpenGL绘制三维地球模型

并指定 球体上点 的法线 向量和纹理 坐标 的方 法来实 现 。采 用 本方法 可以建立 一定半径 、经纬细分 程序可 控 以及 纹理 映射
关系稳定的球体模 型。 地球 是个 椭球体 ,且球 面上海拔 高度分 布不均 ,在设 计 球体 时 ,可首 先将地球想 像成一个 规则球形 ,对 于球面 上任 意一点 ,将地球球 面半径 与该 点对应 高程数 据相加 ,即可得 到该 点距 球心 的距离 ,通 过对球面 上点 的建 模 .可 以得 到具 有真实感 的地球 三维球 面 .叠加全球 遥感影像 数据 形成球 面 纹理 ,从而实现地球仪 的效果 。 球是 曲面 ,按有 限单元 化的思 想 将其进 行 曲 面小片 化 。 地理位 置通过经 纬线来标 定 .经线 和纬线 的交点就 是相应 的 几何 顶点 。顶 点之 间相连 接 ,可 以将 球 削出一 个 正 n面 体 , 对于正 n面体 中的每个三 角形 ,计算 每条边 的 中点 ,中点和 中点 进行连线 。这样一个 三角形小 面就用 4个小 的三角 形来 代替 。最后 把新 生成 的顶 点坐标 所表 示 的向量 进行 单位 化 , 并将此 向量乘上地球 球心距顶 点的距离 ( 即球 面半 径 R与该
Ke y wo r d s : Op e n GL g r a p h i c s l i b r a r y: 3 D Wo r l d Ma p; L OD t e c h n o l o g y
地球模 型的三维 可视化在 G o o g l e e a r t h 、Wo r l d Wi n d等商 业 软件 中已有 所 体 现 ,但 其核 心 算 法 鲜有 系统 研 究 , G o o g l e E a r t h以三 维地球 的形 式把大 量卫 星图片 、航拍 照片和
基于OpenGL的虚拟场景生成技术

算 机 图形 学 、 媒 体 技 术 、 工 智 能 、 机 接 口技 多 人 人
术、 传感器 技术 以及 高 度并 行 的实 时 计 算 技 术 , 还 包 括人 的行 为学 研 究 等 多项 关 键 技 术 。虚 拟 现 实 技术 在军 事 、 天 、 航 医学 、 育 、 乐 等领 域 具 有 广 教 娱 泛 的应用价 值 。
关键词 虚 拟 环 境 ; 理 映 射 ;三维 模 型 纹 T 31 P 9 中 图分 类 号
A n r tn e h iu fVit a e r i vr n n a e n Op n Ge e a ig T c n q e o ru lT ran En io me tB sd o e GL
1 引言
虚拟 现实技 术 是 近 年 来 十 分 活 跃 的研 究 领 域 之一, 是一 系列 高 新 技 术 的 汇集 , 些技 术 包 括 计 这
题 提 出一 种方 法 , 用该方 法 可 以在微 机 上实 时生 利 成 虚拟地 形场 景 。
Opn eGL是 目前 常用 的三 维 图形 接 口 , 它成的基本技术 , 明了规则格网方法的地形建模 方法。使用线性迭加法模拟 了海浪并 说
加 以绘制 , 描述 了树木 、 并 天空 、 船只 、 路等 自然景观 的建模过程 ; 道 给出了一种在 P C环境 中使用 Opn L图形 接 口和 Vi eG s — u l ++开发 虚拟地形场景 的技术和方法. aC 讨论 了虚拟场景 的实时绘制技术 , 利用 多线程技 术实现 了三 维虚拟地形 的实时 绘制 , 制速度基本达 到实时绘制 的要求. 绘 最后 , 给出了一个虚拟地形场 景的实例 , 并实现了人机交互 , 以进行实时漫游 。 可
了二维 和三维 建 模 、 换 、 线 处 理 、 变 光 色彩 处 理 、 纹 理 映射 、 动模糊 、 运 动画和 实 时交互 等 功能 , 是绘 制 真 实感三 维 图形 、 立 三 维 交互 场 景 、 现虚 拟 现 建 实 实 的高性 能 图形 开 发 接 口。使 用 Op n e GL绘 制 三 维场 景具 有 图形 质量 高 、 序 可移植 性好 等优点 。 程
基于OpenGL ES的地形三维显示技术研究

地 形 可 视 化 的概 念是 在 2 0世 纪 6 0年 代 以后 随着
地 理 信 息 系 统 (egahcln r a o yt G S的 G or i f m t nS s m. I) p a Io i e 出 现 而 逐渐 形 成 的 .而 三 维 真 实 感 地 形 生 成 是 地 形 可 视 化 的 核 心 , 般需 要 进行 建 模 、 一 坐标 变 换 、 影 变 换 、 投
P c a k4是 Mimsf公 司推 出的 WiC c 0t n E程 序 可 视 化 开 发
工 具 Mirsf P c e C 2 0 D 是 P 上 开 发 cootp n 技 术 e GLES
0 eG S是 一 个 从 O eG pn LE pn L萃 取 出 来 的 低 阶 、 低 容 量 的先 进 绘 图 用 A I 在应 用 软 件 与 软硬 件 引 擎 P 间 , 提 供 了 低 阶 的应 用 程 序 接 口fP1 它 AI 。这 种 3 D针 对 嵌 入 式 系 统 所 制 定 的绘 图 A I P .能 够 使 3 绘 图 与 游 D
嵌 入 式 系统 中 因 为 O e GL E p n S是 基 于 Op n L所 eG 发 展 出来 的 . 并 不 是 一 个 新 的技 术 . Op n L是 一 它 而 eG
境 的 中文 环境 O e G SI p m n t n为 移 动 平 台 上 开 发 三 pn L E m l et i e a0 维 地 形 的 图形 库 . 要 下 载 安 装 . 载解 压 后 为 bn文 需 下 i 件 夹 , 安 装 步 骤 如 下 : 先 找 到模 拟 器 安 装 目录 , 其 首 一 般 为 \ n o s E T o \c4 0 C E C 20 \简 、 dw olw e2WO K TP 0 3( Wi C s
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于openGL的三维地形场景的生成1、背景介绍 (3)2、openGL中地形动态显示 (3)3、程序的主要功能 (4)3.1 三维地形的生成 (4)3.2 天空盒的生成 (8)3.3 树的生成 (9)3.4 3DS模型的读入 (11)3.5 键盘交互实现漫游 (11)3.6汉字的显示 (12)4、总结 (13)4.1 项目总结 (13)4.2 小组成员分工 (14)参考文献 (15)1、背景介绍地形是自然界最复杂的景物之一,对其三维显示和漫游一直是计算机图形学、地理信息系统、数字摄影测量和遥感研究的热点之一。
但由于受地形结构复杂,数据量大等条件的制约,要实时模拟具有真实感的大范围三维地形,最大的难点是,如何精简并有效地组织地形数据,以达到高速度、高精确度的可视化目的。
openGL是开放式图形工业标准,是绘制高度真实感三维图形,实现交互式视景仿真和虚拟现实的高性能开发软件包。
利用openGL进行地形动态显示的基本框架如图1所示:图1 openGL地形现实基本框架2、openGL中地形动态显示利用openGL进行地形的三维可视化,包含以下几个步骤:(1)openG L模型映射:利用openGL 制作三维立体地形图,就要将数字地面模型格网用openGL提供的点,线,多边形等建模原语描述为openGL图形函数所识别。
(2)遥感图像与地形融合:openGL提供两类纹理:一类纹理图像的大小必须是几何级数;另一类Mipmaps 纹理可为任意大小。
在Mipmaps纹理映射的基础上,可将遥感图像与地形融合。
在遥感影像与数字地形相套合时,地形与遥感影像的配准是关键。
为了获取更好的视觉效果,配准方案可采取数字地形向遥感图像配准,通过控制点,建立匹配方程,将数字地形由大地坐标系转到影像坐标系中。
(3)观察路线设置与视点计算:为了达到三维交互控制的目的,可在正射的遥感数字影像上任意选择观察路线,对路线上的采样点记录其平面坐标,根据采样点的平面位置从DEM 中采用一定的插值方法,确定观察路线上采样点的高程和平面坐标,当采用Fly-through方式观察时,观察路线上每个视点的高度可由观察点地面高程加上飞行高度确定当采用walk-through方式观察时观察路线上每个视点的高度可由观察点地面高程加上身高来确定(4)实时显示Opengl 提供了双缓存技术,通过它可实现地形实时动态显示。
其基本原理是提供前后两个缓存,在显示前台缓存内容的一帧图像时,后台缓存正在绘制下一帧图像后台绘制完成后,交换前后台缓存。
不断循环,实现动态显示。
可进一步结合立体视觉技术传感技术,多媒体技术等实现虚拟现实。
3、程序的主要功能本程序利用openGL实现了三维地形的现实和漫游,天空盒的显示,并且利用billboard 技术在场景中添加了树模型,同时实现了在3DS模型的直接读入。
下面,对各功能的实现原理进行介绍。
3.1 三维地形的生成3.1.1 地形生成的主要思想地形生成的主要思想是:给定等高地形图Terrain2.bmp,将其加载进数组g_imageData[];利用数组中的值生成地形采样点x,y的高程值h。
然后利用三个数组分别保存地形相关的数据,其中:(1)g_terrain [MAP_W*MAP_W][3]:存储地形的x,y,z值,其中每一行代表一个地形采样点。
x和z表示采样点的平面位置。
y表示采样点的高程,高程值的确定通过上述方法获得。
下面以3*3地形的生成为例:g_terrain[3*3][3]如下所示:x y z0 0 01 24 02 48 03 0 -244 24 -245 48 -246 0 -487 24 -48 848-48表1 g_terrain[]数组因为坐标系为:图2 openGL 中的坐标系所以,y 值表示高度h ,值的获取方法为:(2)g_index [MAP_W*MAP_W* 2]:用来保存顶点的索引。
0 0 1 3 2 1 3 4 4 2 5 5 6 3 7 6 8 4 97x10 5 11 8 12 6 13 9 14 7 15 10 16 8 1711表2 顶点索引g_index[]数组(3)g_texcoord [MAP_W*MAP_W][2]:用来保存顶点的纹理坐标。
0 0 0 1 10 2 2 0 3 0 1 4 1 1 5 2 1 6 0 2 7 1 2 822表3 顶点纹理坐标数组g_texcoord[]g_texcoord []数组的使用是结合glBindTexture(GL_TEXTURE_2D, g_cactus[0]),用来指定纹理坐标。
3.1.2 地形生成的主要过程上述三个数组准备完成后,利用glDrawElements ()函数来实现地形的绘制。
glDrawElements ()具体实现为:glDrawElements(GL_TRIANGLE_STRIP,MAP_W*2,GL_UNSIGNED_INT,&g_index[z*MAP_W*2]); 其中:GL_TRIANGLE_STRIP 指出要绘制的模式。
MAP_W*2是纹理数组的大小。
GL_UNSIGNED_INT 指出第四个参数索引数组的类型。
g_index 是三角形的索引数据,随着z 的改变,该函数每次利用MAP_W*2个g_terrain[]中的顶点,按照g_index[]中的顺序,每三个绘制一个三角形。
图3 地形绘制主要过程函数以此从g_terrain[]数组中取出MAP_W*2个顶点,按照g_index[]中的顺序,每三个点绘制一个三角形。
利用循环来绘制整个场景中地形。
x图4:采用GL_LINE_LOOP地形绘制图5:贴纹理后地形图3.2 天空盒的生成天空是由一个长方体(称为天空盒),在它的各个面上贴有表示天空的图片形成的。
对于用作天空背景的图片有特殊要求。
4面图的边与顶图的边相连,4面图前后相连,并且图片大小为2的N次方(32、64、128...)具体是通过绘制表示各面天空的四边形面,并赋予各面的天空纹理来实现的。
代码如下:图6 天空盒中的裂缝本程序采用glew中提供的glTexParmeteri()函数来消除裂缝。
glTexParmeteri()函数更改了控制滤波方式。
这里采用的是边缘截取(GL_CLAMP_TO_EDGE)的方法来解决。
修正后得到的天空如图7所示:图7 消除缝隙后的天空3.3 树的生成openGL 中植物的模拟有多种方法,本程序采用billboard 方法来生成树。
公告牌技术,即billboard 技术,在3D 游戏中有着广泛的应用。
它的本质就是用预先做好的位图来代替3D 物体,极大地节省资源和提高速度。
当我们在旋转场景时,场景中的一些平面(树)也跟着旋转。
就是说不管我们怎么旋转场景,看到的都是平面(树)的正面,它始终对着我们。
由这样的平面构成的树,就给我们一种三维模型的假象。
在一个矩形平面上贴一个树木的图片,并让树的背景呈透明状态。
将它放在OpenGL场景中,这就是我们所要的树。
图8:树形图Billboard树的生成原理为:1)开启混合模式和Alpha测试glEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);glEnable(GL_ALPHA_TEST);glAlphaFunc(GL_GREA TER, 0);2)定义一个16个元素的矩阵m[],获得当前的模型视图矩阵,并保存到m中。
float mat[16];glGetFloatv(GL_MODELVIEW_MATRIX, mat);3)vector3_t X(mat[0], mat[4], mat[8]);// 0, 4, 8 表示视图矩阵的X方向vector3_t Z(mat[1], mat[5], mat[9]);// 1, 5, 9 表示视图矩阵的Y方向(三维的Z方向) 4)根据X 和Z确定的位置,生成树平面,它就直接受到模型视图矩阵的控制。
具体的实现代码为:3.4 3DS模型的读入场景中的3DS模型是通过将模型对象的几何位置坐标、法向量、材质等信息分别读入对应的数据结构,然后进行绘制实现的。
直接读入外部文件大大缩短了复杂物体建模的时间,是可视化系统中的一项重要技术。
图9openGL场景中直接读入3DS模型3.5 键盘交互实现漫游程序中利用键盘来控制场景方位角左右移动、俯仰角上下移动。
以此来实现交互。
上述参数利用键盘操作改变后,利用DisplayScene()函数来实现摄像机的漫游。
图10:效果演示图3.6汉字的显示OpenGL是一个3D图形界面,在它上面显示文字有别于在Windows图形环境下显示文字。
由于OpenGL的底层不支持汉字的双字节编码,所以对汉字的显示相对困难。
OpenGL是一个3D图形界面,在它上面显示文字有别于在Windows图形环境下显示文字。
在OpenGL上文字需要一些特殊的方法,因为在3D图形界面上,有平面文字、3D文字之分。
特别是汉字的显示要麻烦一些,因为OpenGL的底层不支持汉字的双字节编码。
常规文字这种文字显示是一种高效能的、以位图方式绘制字体的方法,它采用了一种平面图形的方法,所以显示的是平面文字。
只可惜,这个平面文字显示方法不能支持汉字。
3D文字OpenGL中文字也可以作为3D对象来显示。
这种3D文字可以缩放、旋转、贴图,有其它3D对象的所有特性。
我们在程序还加入了对双字节汉字的特殊处理,所以它也能显示立体汉字。
平面汉字OpenGL平面汉字。
基本原理是:在系统内部建立一个确定字体的设备场景(MDC),用GDI方式将文字在设备场景中形成单色位图,再用OpenGL的平面位图显示函数glBitmap ()将文字显示出来。
绘制函数为:void CGLFont:: Printftext (int x, int y, LPCTSTR lpszText, HFONT hFont)其中:x, y:定位汉字;lpszText:要显示的文字;hFont:字体。
图11:OpenGl显示汉字图4、总结本次大作业是在小组成员的全力配合和协作下完成的。
通过资料调研,代码查找,分析改进,文档撰写这几方面的工作,实现了小组成员的合理分工和特长的发挥。
同时,项目的最终实现结果符合预期目的。
4.1 项目总结本项目的选题为“基于openGL的三维地形场景的生成”。
题目的选定是在小组成员全球海量地形实时可视化的研究背景下完成的。
旨在通过此次项目实习,为以后研究内容的展开奠定基础。
本项目利用openGL实现了在已知高程等高线灰度图的基础上,进行三维地形的可视化。
同时,为了增加场景的逼真性,利用billboard技术在场景中增加了树。