文档库 最新最全的文档下载
当前位置:文档库 › OPENGL link error unresolved external symbol __imp____glutInitWithExit@12

OPENGL link error unresolved external symbol __imp____glutInitWithExit@12

OPENGL link error  unresolved external symbol __imp____glutInitWithExit@12
OPENGL link error  unresolved external symbol __imp____glutInitWithExit@12

OpenGL vs2008中碰到的配置问题,网上找了下,以下和我碰到的一样,可以解决,感谢作者

原文链接:https://www.wendangku.net/doc/2910068409.html,/guojingjia2006/archive/2008/12/08/68874.html

我遇到了这样的问题,用该方法很快解决了,原文没有分享链接,因此放在百度文库unresolved external symbol __imp____glutInitWithExit@12 unresolved external

I have the folling files in the following locations: -

glut.h

glu.h

gl.h

C:\Program Files\Microsoft Visual Studio 8\VC\include\GL

glut.32.lib

C:\Program Files\Microsoft Visual Studio 8\VC\lib

glut32.dll

glu32.gll

C:\WINDOWS\system32

I make a new project (Win32 Console App).

Set the Additional Dependencies under

Project | Properties | Config Properties | Linker | Input

I have: -

opengl32.lib glu32.lib glut32.lib

This is basically what just about every site I look at tells me to do.

So I copy over some code that I know compiles and runs under my Dev C++ setup...

And it fails to compile with the following errors: -

1>main.obj : error LNK2019: unresolved external symbol __imp____glutInitWithExit@12 referenced in function _glutInit_ATEXIT_HACK@8

1>main.obj : error LNK2019: unresolved external symbol __imp____glutCreateWindowWithExit@8 referenced in function _glutCreateWindow_ATEXIT_HACK@4

This is didn't happen a little while ago, as I was trying to solve a previous problem. This was that when I tried to run a successfully compiled program, an error would say: -

The procedure entry point __glutInitWithExit could not be located in the dynamic link library

glut32.dll

solution:

Try define the following line right before including the header, glut.h. #define GLUT_DISABLE_ATEXIT_HACK

基于openGL的三维地形场景的生成

基于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方式观察时观察 路线上每个视点的高度可由观察点地面高程加上

OPenGL的基本程序结构

O p enGL的基本程序结构 常用的程序设计语言,如C、C++、Pascal、Fortran和Java等,都支持OpenGL的开发。这里只讨论C版本下OpenGL的语法。 程序的基本结构 OpenGL程序的基本结构可分为三个部分: 第一部分是初始化部分。主要是设置一些OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等。这些状态一般都用函数glEnable(???), glDisable(???)来设置,???表示特定的状态。 第二部分设置观察坐标系下的取景模式和取景框位置大小。主要利用了三个函数: 函数void glViewport(left,top,right,bottom):设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以象素表示); 函数void glOrtho(left,right,bottom,top,near,far):设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体; 函数void gluPerspective(fovy,aspect,zNear,zFar):设置投影方式为透视投影,其取景体积是一个截头锥体。

第三部分是OpenGL的主要部分,使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系、几何变换、光照处理等等。 以上三个部分是OpenGL程序的基本框架,即使移植到使用MFC的Windows程序中,也是如此。只是由于Windows自身有一套显示方式,需要进行一些必要的改动以协调这两种不同显示方式。 OpenGL基本函数均使用gl作为函数名的前缀,如glClearColor();实用函数则使用glu作为函数名的前缀,如gluSphere()。 OpenGL基本常量的名字以GL_开头,如GL_LINE_LOOP;实用常量的名字以GLU_开头,如GLU_FILL。一些函数如glColor* ()(定义颜色值),函数名后可以接不同的后缀以支持不同的数据类型和格式。如glColor3b(...)、glColor3d(...)、 glColor3f(...)和 glColor3bv(...)等,这几个函数在功能上是相似的,只是适用于不同的数据类型和格式,其中3表示该函数带有三个参数,b、d、f分别表示参数的类型是字节型、双精度浮点型和单精度浮点型,v则表示这些参数是以向量形式出现的。 OpenGL定义了一些特殊标识符,如GLfloat,GLvoid。它们其实就是C中的 float和void。在gl.h文件中可以看到以下定义: …… typedef float GLfloat; typedef void GLvoid; ……

利用Smart3D建模软件生成三维地形过程精编版

利用Smart3D建模软件生成三维地形过程本篇经验将和大家介绍以一组无人机倾斜摄影照片为原始数据,通过Smart3D 建模软件,重建生成三维地形的过程,希望对大家的工作和学习有所帮助! 工具/原料 ?包括Smart3D建模软件 ?一组垂直拍摄而且多角度、重叠度满足重建要求的航片 ?航片对应的pos数据文件 概况 关于通过无人机航拍的照片,照片进行三维重建生产模型,一些情况下照片中是自带有GPS数据信息的,而另一些情况则是会导出一组无定位信息的照片和对应的pos数据文本。 前者我们直接新建区块,把照片直接导入给软件跑出结果就ok了。 那么,这次我们主要来谈论研究第二种情况,即照片和pos分开的情况。 END 区块导入表格的编辑 区别于第一种情况我们需要编辑下导入区块的表格,我们将照片的文件路径、参考坐标系、传感器的基本信息等信息嵌入到这个表格里,通过它来实现对照片和pos信息数据的导入。后面的操作处理是跟直接导入照片的方法是没有差别的。 首先,我们看到原始数据的文件夹如下图所示,包括一组照片和相应的pos 文件,如下图所示:

1. 2 可以看到,这个pos数据是以文本文档的形式存在,如下图所示: 3 而在导入区块的过程当中,我们需要导入Excel表格,那么,这时需要运用一定的办公软件的技巧将其转换为Excel表格,这个表格需要包含如下图的4个工作表,如下图所示: 4 结果如下图所示: 5 Photogroups工作表中,名称列需要与照片工作表的PhotogroupName一致,如下图所示:

6 Photos工作表的编辑结果,如下图所示: 2.7 控制点工作表中,由于无人机航拍的区域不是很大,且对于建模成果的精度没有设定范围,追求建成模型的速度,我们本次先不设控制点,很多朋友都是误把照片放到了这个工作表中,致使处理出现问题,需要注意一下。编辑结果,如下图所示: 8 Options工作表中,是坐标系和照片路径的信息,设置如下,如下图所示:

地形三维建模

实验三地形三维建模 实验内容: 1、以实测高程点为基础数据,在Cass中制作地形三维模型。 2、以实测等高线为基础数据,在ArcGIS中制作地形三维模型。 主要操作步骤: 1、获取实测高程点的坐标文件数据。(*.dat) 1)使用全站仪、棱镜等测量设备,在指定区域内实测若干高程点,并记录每个高程点的平面坐标及高程。注意:测量高程点时,每个点的间距在5米左右,均匀覆盖所测区域,测站时量测仪器高、棱镜高,输入测站点高程值。高程点数不少于60个。在测高程点的同时,兼顾地物的测量。线性地物数(道路、陡坎、沟渠)不少于5个。 2)实测结束后,将数据转换成Cass坐标文件(*.dat) 在这里以CQSJ.dat数据文件为例 2、在Cass软件将高程点进行展绘,绘制成等高线。将绘制完成的数据保存为DGX.dwg。(本讲义以CQSJ.dat数据为例) 1)打开Cass,导入CQSJ.dat中的高程点 选择“绘图处理—》展高程点”菜单,依次输入绘图比例尺“1:500”,高程点的间距“1”米,即可展绘文件中的高程点。

选择“等高线—》建立DTM”菜单,构建三角网。

再选择“等高线—》绘制等高线”菜单,生成等高线

再选择“等高线—》删三角网”,删去三角网。

3)修饰等高线 在图上标注相应等高线的高程值 4)绘制其他地物(道路、陡坎、沟渠等) 注意:线性地物穿过等高线时,等高线要断开。 5)完成后,保存为DGX.dwg文件。 3、在Cass中进行地形三维建模 使用“等高线—》三维模型—》绘制三维模型”菜单,选择高程点数据文件CQSJ.DAT。 依次输入高程乘系数(默认是1.0,此值是高程值的缩放比例,如果高程值的变化不大,可适当输入较大的系数,三维地形的起伏将比较明显,本例中输入5),输入网格间距(默认是8.0,绘制网格的大小,可根据需要进行调整),选择进行拟合。即可看到地形的三维模型,由于此处的高程乘系数为5,地形起伏得到放大,显得比较明显。

OpenGL的库函数介绍

OpenGL的库函数介绍 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。 OpenGL库函数的命名方式非常有规律。所有OpenGL函数采用了以下格式: <库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有gl、glu、aux、glut、wgl、glx、agl等等,分别表示该函数属于OpenGL那个开发库。从函数名后面中还可以看出需要多少个参数以及参数的类型。I代表int型,f代表float型,d代表double型,u代表无符号整型。例如:glVertex3fv()表示了该函数属于gl库,参数是三个float型参数指针。我们用glVertex*() 来表示这一类函数。 OpenGL函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(glx、agl、wgl)和扩展函数库等。从下图可以看出,核心库(gl)是核心,实用库(glu)是对gl的部分封装。窗口库(glx、agl、wgl)是针对不同窗口系统的函数。实用工具库(glut)是跨平台的OpenGL程序的工具包,比aux功能强大。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。下面逐一对这些库进行详细介绍。 1.OpenGL核心库(GL) 核心库包含有115个函数,函数名的前缀为gl。这部分函数用于常规的、核心的图形处理。由于许多函数可以接收不同数据类型的参数,因此派生出来的函数原形多达300多个。核心库在Windows平台上的头文件为“GL.H”,库文件为“OPENGL32.LIB”,动态链接库为“OPENGL32.DLL”。核心库可以在所有的OpenGL平台上运行。 核心库中的函数主要分为以下几类: ●基本几何图元的绘制函数:glBegain()、glEnd()、glNormal*()、glVertex*(); ●矩阵操作、几何变换和投影变换的函数:如矩阵入栈函数glPushMatrix(),矩阵出 栈函数glPopMatrix(),装载矩阵函数glLoadMatrix(),矩阵相乘函数glMultMatrix(), 当前矩阵函数glMatrixMode()和矩阵标准化函数glLoadIdentity(),几何变换函数 glTranslate*()、glRotate*()和glScale*(),投影变换函数glOrtho()、glFrustum()和视 口变换函数glViewport(); ●颜色、光照和材质的函数:如设置颜色模式函数glColor*()、glIndex*(),设置光照 效果的函数glLight*() 、glLightModel*()和设置材质效果函数glMaterial(); ●显示列表函数:主要有创建、结束、生成、删除和调用显示列表的函数glNewList()、 glEndList()、glGenLists()、glCallList()和glDeleteLists(); ●纹理映射函数:主要有一维纹理函数glTexImage1D()、二维纹理函数 glTexImage2D()、设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、 glTexEnv*()和glTetCoord*();

三维大地形模型的生成与管理方法研究

系统仿真学报Vol. 17 No. 2 JOURNAL OF SYSTEM SIMULATION Feb. 2005?388? 三维大地形模型的生成与管理方法研究 张恒,张茂军,刘少华 (国防科技大学五院多媒体研发中心, 湖南长沙 410073) 摘要:以虚拟战场环境为背景,针对大地形可视化中的特殊要求,介绍了三维大地形模型的生成 方法和步骤,阐述了地理数据格式的转化方法和人文特征的读取方法与显示途径。实验结果证明该 方法可以有效地应用于三维大地形模型的生成与管理,并为最终建立大范围的虚拟战场环境提供基 础。 关键词:大地形模型; 地形转换; 人文特征显示; 虚拟战场环境 文章编号:1004-731X (2005) 02-0388-04 中图分类号:TP391.9 文献标识码:A Research on Generating and Managing 3D Large T errain Model ZHANG Heng, ZHANG Mao-jun, LIU Shao-hua (Multimedia Research and Development Center, 5th College, NUDT, Changsha Hunan 410073, China)Abstract: It is introduced the methods and steps for generating the large scale terrain models under the context of virtual battlefield environments. And the methods for transforming the geographic data format and reading and presenting the civil feature data are discussed as well. The experimental results show that the methods we presented are efficient to create and manage a 3D large terrain model. So these methods can provide the foundations for constructing the virtual battlefield environments. Keywords: large scale terrain; terrain conversion; culture feature display; virtual battlefield environment 引言 虚拟战场环境已成为虚拟现实技术的一个重要研究方向。其中三维大地形模型的生成和有效管理是虚拟战场环境的重要基础,并且随着计算机技术、三维图形技术与遥感技术的快速发展,利用数字地面模型(DTM)或数字高程模型(DEM),结合高清晰度卫星或航拍照片生成某区域的三维地形模型的方法,得到用户的充分肯定,已成功应用于战场模拟、地理信息系统、地形分析、铁路公路建设、气象数据可视化等众多领域。 三维大地形模型的生成与管理技术主要涉及到地形多分辨率表示、海量地形数据和纹理数据的分页管理、地形和纹理数据的LOD控制、地形和纹理数据的快速存取和更新等关键技术。尽管前人已做了很多这方面的工作,但真正实用且适合大范围三维地形的构建及其实时渲染的算法还不多。人文特征数据在地理信息系统(GIS)中使用比较广泛,数据也比较丰富,但主要还是集中二维的符号表达方式上,与三维大地形的结合还没有形成一个有效的方法和统一的过程。 另一方面,随着计算机硬件和软件水平的不断提高,人们对三维地形的真实性要求也越来越高。除了利用光照技术 收稿日期:2004-02-24 修回日期:2004-05-30 基金项目:国家自然科学基金资助项目(69905004) 作者简介:张恒(1979-), 男, 辽宁人, 硕士生, 研究方向为多媒体与虚拟现实;张茂军(1972-), 男, 教授, 博导, 研究方向为虚拟现实系统、虚拟仿真、先进训练系统等; 刘少华(1983-), 男, 河南人, 硕士生, 研究方向为多媒体与虚拟现实。使三维地形有明暗显示外,通常为了提高三维地形的真实性,还可以添加图像纹理(如叠加卫星照片、彩色地形图等)、分形纹理(利用分形产生植被和水系等)和叠加地表地物(道路、河流、建筑物等)。本文着眼于构建真实感虚拟战场环境的需要,以Multigen公司的Creator软件为主要平台,研究了构建三维大地形模型的一般方法与步骤,并结合一个具体的项目,介绍了我们构建其三维大地形模型中选用的一些技术,以及得出的一些成功的经验。 1 构建三维大地形模型的过程 三维大地形模型直接为虚拟战场环境视景仿真服务。然而,仿真的应用目的直接决定三维大地形模型所需的精细程度[9]。“如果仿真应用系统的侧重点在于作战方案评估,则作战模型及其数据的合理性就至关重要,不能有较大的偏差,否则就得不出正确的作战方案结论。但与指挥过程相关的模型可以适当简化。如果仿真应用系统的重点在于训练,则模型及其数据相对合理即可,因为训练的重点在指挥的过程”[9]。不同的训练用途也决定不同的模型精细程度要求。比如:用于训练飞行员的仿真应用系统与用于训练坦克的仿真应用系统相比,对模型的精细程度与侧重点要求都有比较大的差异。为此,我们在构建三维地形模型之前,需要做的第一件事情便是进行仿真目的分析,得出仿真模型的应用需求。并由此选择合适的模型精细程度,以便以最小的代价,最大程度地满足用户的需求。 图1 显示了三维大地形模型构建过程的UML表示,具

OpenGL 函数 gluLookAt

OpenGL 函数gluLookAt() glScalef() glTranslatef() glRotatef() glFrustum() glPerspective() 的使用 1.gluLookAt()——视图变换函数 把自己的眼睛当成是照相机,前三个参数表示眼睛的坐标,中间三个参数表示要拍照的物体的中心位置,可以理解成焦点吧, 后三个参数表示头顶的朝向,比如说头可以歪着(哈哈)。但是我测试过,如果歪的不对,原来的正前方现在已经不是正前方 了,那么就看不见物体了。举个例子: gluLookAt (0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);//这个就表示头顶是朝着y方向 gluLookAt (0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0);//这个表示头歪了45度,头顶朝着(1.0,1.0,0.0)这个方向 2.glScalef() ——模型变换函数缩放 void glScalef(GLfloat x, GLfloat y, GLfloat z); 模型变换的目的是设置模型的位置和方向,例如可以对模型进行旋转、移动和缩放,或者联合这几种操作。 这个函数表示模型在各轴上是如果进行缩放的。举个例子: glScalef (1.0, 2.0, 1.0);//表示y坐标值扩大两倍,这样原本方的物体就变成长的了。 3.glTranslatef() ——模型变换函数移动 void glTranslatef(GLfloat x, GLfloat y, GLfloat z); 这个函数表示模型是怎样移动的。举个例子: glTranslatef(-1.0,0.0,-2.0);//表示物体沿x负方向移动1.0,沿z轴负方向移动2.0。所以就好像能看见侧面一样

OpenGL使用手册.

OpenGL函数使用手册 (一)OpenGL函数库 格式: <库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有 gl、glu、aux、glut、wgl、glx、agl 等等, 1,核心函数库主要可以分为以下几类函数: (1) 绘制基本的几何图元函数。如:glBegain(). (2) 矩阵操作、几何变换和投影变换的函数。如:矩阵入栈 glPushMatrix(),还有矩阵的出栈、转载、相乘,此外还有 几何变换函数glTranslate*(),投影变换函数glOrtho()和 视口变换函数glViewport()等等。 (3) 颜色、光照和材质函数。 (4) 显示列表函数,主要有创建、结束、生成、删除和调用 显示列表的函数glNewList()、glEndList()、 glGenLists()、glDeleteLists()和glCallList()。(5) 纹理映射函数,主要有一维和二维纹理函数,设置纹理 参数、纹理环境和纹理坐标的函数glTexParameter*()、 glTexEnv*()和glTetCoord*()等。 (6) 特殊效果函数。 (7) 选着和反馈函数。 (8) 曲线与曲面的绘制函数。 (9) 状态设置与查询函数。 (10) 光栅化、像素函数。 2,OpenGL实用库(The OpenGL Utility Library)(GLU) 包含有43个函数,函数名的前缀名为glu. (1) 辅助纹理贴图函数。 (2) 坐标转换和投影变换函数。 (3) 多边形镶嵌工具。 (4) 二次曲面绘制工具。

(5) 非均匀有理B样条绘制工具。 (6) 错误反馈工具,获取出错信息的字符串gluErrorString() 3,OpenGL辅助库 包含有31个函数,函数名前缀名为aux 这部分函数提供窗口管理、输入输出处理以及绘制一些简单的三维物体。 4,OpenGL工具库(OpenGL Utility Toolkit) 包含大约30多个函数,函数前缀名为glut,此函数由glut.dll来负责解释执行。 (1) 窗口操作函数。窗口初始化、窗口大小、窗口位置等函 数glutInit() glutInitDisplayMode()、glutInitWindowSize() glutInitWindowPosition()等。 (2) 回调函数。响应刷新消息、键盘消息、鼠标消息、定时 器函数等,GlutDisplayFunc()、glutPostRedisplay()、 glutReshapeFunc()、glutTimerFunc()、 glutKeyboardFunc()、 glutMouseFunc()。 (3) 创建复杂的三维物体。这些和aux库函数功能相同。如创 建球体glutWireSphere(). (4) 函数菜单 (5) 程序运行函数 glutAttachMenu() 5,16个WGL函数,专门用于OpenGL和Windows窗口系统的联接,其前缀名为wgl。 (1) 绘制上下文函数。 wglCreateContext()、 wglDeleteContext()、wglGetCurrentContent()、 wglGetCurrentDC() wglDeleteContent()等。 (2) 文字和文本处理函数。wglUseFontBitmaps()、 wglUseFontOutlines()。 (3) 覆盖层、地层和主平面处理函数。wglCopyContext()、 wglCreateLayerPlane()、wglDescribeLayerPlane()、wglReakizeLayerPlatte()等。 (4) 其他函数。wglShareLists()、wglGetProcAddress()等。

OpenGL库函数一览表

OpenGL库函数列表 OpenGl核心函数库 glAccum 操作累加缓冲区 glAddSwapHintRectWIN 定义一组被SwapBuffers拷贝的三角形glAlphaFunc允许设置alpha检测功能 glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中glArrayElement 定义一个被用于顶点渲染的数组成分 glBegin,glEnd 定义一个或一组原始的顶点 glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理glBitmap 绘制一个位图 glBlendFunc 特殊的像素算法 glCallList 执行一个显示列表 glCallLists 执行一列显示列表 glClear 用当前值清除缓冲区 GlClearAccum 为累加缓冲区指定用于清除的值 glClearColor 为色彩缓冲区指定用于清除的值 glClearDepth 为深度缓冲区指定用于清除的值 glClearStencil 为模板缓冲区指定用于清除的值 glClipPlane 定义被裁剪的一个平面几何体 glColor 设置当前色彩 glColorMask 允许或不允许写色彩组件帧缓冲区 glColorMaterial 使一个材质色彩指向当前的色彩 glColorPointer 定义一列色彩 glColorTableEXT 定义目的一个调色板纹理的调色板的格式和尺寸glColorSubTableEXT 定义目的纹理的调色板的一部分被替换glCopyPixels 拷贝帧缓冲区里的像素 glCopyTexImage1D 将像素从帧缓冲区拷贝到一个单空间纹理图象中glCopyTexImage2D 将像素从帧缓冲区拷贝到一个双空间纹理图象中glCopyTexSubImage1D 从帧缓冲区拷贝一个单空间纹理的子图象glCopyTexSubImage2D 从帧缓冲区拷贝一个双空间纹理的子图象glCullFace 定义前面或后面是否能被精选 glDeleteLists 删除相邻一组显示列表 glDeleteTextures 删除命名的纹理 glDepthFunc 定义用于深度缓冲区对照的数据 glDepthMask 允许或不允许写入深度缓冲区 glDepthRange 定义z值从标准的设备坐标映射到窗口坐标glDrawArrays 定义渲染多个图元 glDrawBuffer 定义选择哪个色彩缓冲区被绘制 glDrawElements 渲染数组数据中的图元 glDrawPixels 将一组像素写入帧缓冲区 glEdgeFlag 定义一个边缘标志数组 glEdgeFlagPointer 定义一个边缘标志数组 glEnable, glDisable 打开或关闭OpenGL的特殊功能

三维随机分形地形生成

原文:http://www.gam https://www.wendangku.net/doc/2910068409.html,/fractal.html 目录 说明:本页所有图像均经过优化以减小尺寸,所以与实际图像会有细微差别。 1.第一部分:生成随机分形地形 1.介绍 2.自相似 3.一维中点变换 4.高度图 5.Diamond-Square 算法 6.蓝天白云 7.其它算法 2.第二部分关于例子源码 1.安装

2.快速起步 3.使用程序 4.代码结构 5.下载源码[Visual C++工程,使用SGI实现的OpenGL](单击标题下载) 6.参考 终于找到这个SGI OpenGl地址了: https://www.wendangku.net/doc/2910068409.html,/tools/ocx/ocx_image/opengl2.exe 介绍 十年前,我参加1986 年SIGGRAPH 活动,Gavin S. P. Miller 那篇题为Definition and Rendering of Terrain Maps 的论文让我充满敬畏。该文描述了少数生成分形地形的算法,作者还介绍了一个他们认为更先进的新方法。 开始我被这些算法能够生成难以置信的风景图所震惊!(尽管这些算法被作者认为“漏洞百出”)后来,读过论文,这些算法之简单将我完全打败了。 我从此成为一个分形地形迷。 算法背后的数学可能相当复杂。然而,完全理解这些数学并不是掌握这些算法的必要条件。很好,否则我得在解释算法之前讲解所有的数,也许永远也讲不到算法。此外,关于分形数学的文字材料数以吨计,参见本文本的参考部分会有所帮助。 同样的原因,我不会深入到数学细节,也不包括对分形的广泛总览及它们可被用来做的每样东西。相反,我将描述分形地形生成背后的概念,并集中仔细讲解我个人最喜欢的”diamond-square”

OpenGL函数原型

OpenGL函数原型 glAccum 操作累加缓冲区glAddSwapHintRectWIN 定义一组被SwapBuffers拷贝的三角形 glAlphaFunc允许设置alpha检测功能glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中 glArrayElement 定义一个被用于顶点渲染的数组成分 glBegin,glEnd 定义一个或一组原始的顶点glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理 glBitmap 绘制一个位图 glBlendFunc 特殊的像素算法 glCallList 执行一个显示列表 glCallLists 执行一列显示列表 glClear 用当前值清除缓冲区GlClearAccum 为累加缓冲区指定用于清除的值 glClearColor 为色彩缓冲区指定用于清除的值

glClearDepth 为深度缓冲区指定用于清除的值 glClearStencil 为模板缓冲区指定用于清除的值 glClipPlane 定义被裁剪的一个平面几何体glColor 设置当前色彩 glColorMask 允许或不允许写色彩组件帧缓冲区 glColorMaterial 使一个材质色彩指向当前的色彩 glColorPointer 定义一列色彩glColorTableEXT 定义目的一个调色板纹理的调色板的格式和尺寸glColorSubTableEXT 定义目的纹理的调色板的一部分被替换 glCopyPixels 拷贝帧缓冲区里的像素glCopyTexImage1D 将像素从帧缓冲区拷贝到一个单空间纹理图象中glCopyTexImage2D 将像素从帧缓冲区拷贝到一个双空间纹理图象中glCopyTexSubImage1D 从帧缓冲区拷贝一个单空间纹理的子图象

OpenGL GLUT库函数汇总

OpenGL 库函数汇总-3.GLUT 库函数3.GLUT 库函数 初始化和启动事件处理 ------------------------- glutInit glutInitWindowPosition glutInitWindowSize glutInitDisplayMode glutMainLoop 窗口管理 ------------------------- glutCreateWindow glutCreateSubWindow glutHideWindow glutShowWindow glutSetWindowTitle glutPostRedisplay glutSwapBuffers glutFullScreen glutPositionWindow glutReshapeWindow glutSetWindow glutGetWindow glutPopWindow glutPushWindow glutDestroyWindow glutIconifyWindow

glutSetCursor 重叠层管理 ------------------------- glutEstablishOverlay glutUseLayer glutRemoveOverlay glutPostOverlayRedisplay glutShowOverlay glutHideOverlay 菜单管理 ------------------------- glutCreateMenu glutAddMenuEntry glutAddSubMenu glutAttachMenu glutGetMenu glutSetMenu glutDestroyMenu glutChangeToMenuEntry glutChangeToSubMenu glutRemoveMenuItem glutDetachMenu 注册回调函数 -------------------------------

OPENGL中文教程 OPENGL-3-视口和绘制函数

OPENGL中文教程 OPENGL-3-视口和绘制函数

2、设置视口和重载你的绘制函数 NeHe SDK是把Nehe的教程中所介绍的所有功能,以面向对象的形式,提供给编程人员快速开发的一套编程接口。在下面的教程中,我将按NeHe SDK源码的功能分类,一步一步把这套api介绍给大家。如果你觉得有更好的学习方法,或者有其他有益的建议,请联系我。zhouwei02@https://www.wendangku.net/doc/2910068409.html,,zhouwei506@https://www.wendangku.net/doc/2910068409.html, 程序结构: 我们在第一课程序的基础上添加一下功能: 1.创建一个全局的视口类,控制场景中可见的范围

2.创建初始化函数,用来完成绘制的初始化工作 3.创建一个绘制三棱锥的函数 4.设置默认的视口棱台体 5.重栽我们的绘制函数,这里将绘制一个简单的三棱锥 为了使用视口类,我们需要包含下面的头文件(view.h),并声明一个全 局的视口变量view。 /*************************************新增的代码:包含视口类的声明********************/ #include "view.h" // 包含视口类的声明 /**********************************新增的代码:包含视口类的声明:结束******************/ /*************************************新增的代码:创建View类 ****************************/ View view; // 创建视口类/**********************************新增的代码:创建View类:结束 **************************/ 接着创建一个新的cpp文件,用来重栽我们的绘制函数。这里我把它命 名为Draw.cpp 为了使用OpenGL类和View类,我们需要包含头文件opengl.h和 view.h。 为了方便起见,我们启用NeHe名字空间。 接着我们使用extern关键字来使用全局变量view,最后我们创建一个 变量initialize来记录是否需要初始化。 整个代码如下: #include "opengl.h" // 包含创建OpenGL程序的框架类 #include "view.h" // 包含视口类的声明 #pragma comment( lib, "NeheSDK.lib" ) // 包含NeheSDK.lib库 using namespace NeHe; // 使用NeHe名字空间

glut常用函数介绍

GLUT常用函数介绍 stephenxjc_千年一笑 2010-7-29 对象:GLUT的入门级(初学者) 关键字:GLUT、函数 核心内容:主要是通过在一个具体的程序中函数的作用 平台:visual studio2008,需要配置好OpenGL32.lib、GLu32.lib、GlAux.Lib、glut32.lib和相应的dll文件。 正文 1示例 简单的一个主函数:

glutInitWindowSize() ,glutCreateWindow()等函数比较简单,程序中的介绍已经足够。下面重点介绍其它函数。 2glutInitDisplayMode() 初始化显示模式。这里主要采用RGB模式显示,并采用双缓存模式。双缓存模式相对的是单缓存,双缓存是现在后台缓存绘制,在绘制完成后,将后台与前台缓存交换,后台变前台,前台变后台,达到快速输出的效果。而单缓存,在绘制时就在唯一缓存中绘制,当绘制时间比较长时,会使屏幕比较卡。 3glutKeyBoardFunc(pressKeyboard) 设定键盘响应函数为pressKeyboard,函数的结构为:

其中,key为返回的按键的ASCII编码,x和y为鼠标的当前的位置。 4glutSpecialFunc(specialKey) 实际也是针对按键响应,但与glutKeyBoardFunc相比,前者针对的是一些特殊的按键。包括:GLUT_KEY_F1,GLUT_KEY_F2,GLUT_KEY_F3,GLUT_KEY_F4,GLUT_KEY_F5,GLUT_KEY_F6,GLUT_KEY _F7,GLUT_KEY_F8,GLUT_KEY_F9,GLUT_KEY_F10,GLUT_KEY_F11,GLUT_KEY_F12,GLUT_KEY_LEFT, GLUT_KEY_UP,GLUT_KEY_RIGHT,GLUT_KEY_DOWN,GLUT_KEY_PAGE_UP,GLUT_KEY_PAGE_DOW N,GLUT_KEY_HOME,GLUT_KEY_END,GLUT_KEY_INSERT。函数结构与glutKeyBoardFunc相同。 5glutMouseFunc(pickTarget) 鼠标点击响应。pickTarget函数结构如下:

基于等高线的MulitigenCreator三维地形建模与实现

2009年第3期 福建电脑 基于等高线的Mulitigen Creator三维地形建模与实现 黄华国1,2 (1.福建水利电力职业技术学院福建永安366000 2.福州大学福建福州350002) 【摘要】:该文以福建水利电力职业技术学院新校址的3维地形建模与可视化为例,介绍由等高线地形图数据,使用Mulitigen Creator的地物建模功能,生成3维地形图的一种实现方法,模拟了新校址的整个生态地貌,为学院新校址规划和建设决策以提供了有力的技术支持。 【关键词】:Mulitigen Creator3维地形建模地形建模算法 0、引言 虚拟现实技术是利用计算机模拟的3维环境对现场真实环境进行仿真,而地形仿真建模是虚拟现实工作中最基本的、最重要的环节之一。本文以福建水利电力职业技术学院新校址地形的CAD图为基础,使用Mulitigen Creator实时软件,对整个地形地貌进行了3维建模,然后对3维模型进行校正处理和纹理贴图,最后模拟了整个新校址的生态地貌,为学院新校区的规划和建设提供了有利的参考依据,并为虚拟数字校园的建设奠定了良好基础。 1、地形建模软件的选择 1.1Mulitigen Creator简介 Mulitigen Creator是美国MultiGen-Paradigm公司开发的著名实时3维仿真建模工具软件,用于产生高优化,高精度的实时3D内容,在视景仿真、交互式游戏、城市仿真等领域中得到广泛地应用。它是一个功能强大、交互的3维建模工具,可以在它所提供的"所见即所得"建模环境中建立我们所期望的、优化的3维模型。强大的建模功能可为众多不同类型的图像生成器提供建模系统及工具,独创了3维虚拟场景的层次化数据结构-Open Flight格式在实时3维领域中成为最流行的图像生成格式,并成为视景仿真领域事实上的行业标准。利用Creator交互式、直观的用户界面进行多边形建模和纹理贴图,能够很快生成一个高逼真的模型,并且所创建的3维模型能够在实时过程中随意进行优化。 1.2Creator与3DS MAX的比较[1] 3DS Max具有丰富的多边形工具组件和UV坐标贴图的调节能力,此软件具有可操作性强、直观、方便易学、制作模型逼真、质感强等特点,然而其致命弱点是模型复杂造成了文件过大,不能满足虚拟现实系统实时性的要求,若导入到Creator中还必须进行模型位置的定位、模型的优化与调整等操作,否则极大的数据量会影响整个系统的运行效率,造成实时漫游困难。实时仿真建模软件Creator的最大优势在于大场景的地理环境的生成和浏览,此外,它还具有强大的兼容性和操作性,可以与Mulitigen Vega兼容,满足虚拟校园系统实时性的要求。利用Creator建模,模型数据量不大,细节比较少,并可以采用子面的方法降低模型的复杂度,缺点是建模过程比较复杂,工具组件没有3DS Max丰富,在Creator中对对象的创建、移动、控制等操作没有3DS Max灵活,构造复杂模型没有3DS Max方便。 根据以上的比较,考虑虚拟数字校园系统对实时性有较高要求,所以决定采取利用Mulitigen Creator软件进行3维地形建模。 2、地形建模的思路和方法 2.1地形建模数据及软件准备 建模前要准备好DWG格式的CAD等高线文件和地形的航空影像图片;同时在计算机上安装好以下软件:(1)Auto CAD 2004软件;(2)CAD2SHAPE软件;(3)ArcGIS9.0软件;(4)Global Mapper软件;(5)Mulitigen Creator3.0软件。 2.2地形建模的思路 构建过程是把高程数据、地质图等要素数据、地表纹理数据等经过矢量化或转换,变成Multigen Creator建模软件认可的格式,并在Creator中进行建模,形成Openflight格式的地表地质环境数据库。由于Creator能处理的地形数据为DED格式,针对地形建模的应用需求,基于Mulitigen Creator进行地形建模的思路的具体流程如图1所示。 图1基于Mulitigen Creator的地形建模流程图 具体来讲,该方法的主要步骤包括:(1)用Auto CAD对等高线进行预处理;(2)使用CAD2SHAPE软件将CAD等高线文件转化为Shape文件;(3)用ArcGIS软件将Shape格式文件生成为ArcGIS TIN格式及ArcGIS Binary GRID文件;(4)利用Global Mapper软件将ArcGIS GRID文件转换为USGS DEM格式文件;(5)利用Creator的DED Builder工具将DEM格式文件转换为DED格式文件;(6)在Creator中进行地形建模;(7)进行地物匹配处理;(8)地形纹理贴图。 3、数据预处理 由于CAD数据格式地形图要素表现形式有多种,其面状地物如建筑物、水系不完全闭合;线状地物如道路等高线等碰到软地物如高程点、汉字注记有断开;因此必须进行查错和相应的处理。经过对地面高程点提取和修改、删除多余图层等操作后,使用CAD2SHAPE软件将原始数据转换为Shape格式文件给Ar鄄cGIS调用,ArcGIS可以直接调用DXF和DWG这两种格式文件,但是打开后只能分成"注释"、点、"线"、"面"4层,这样不能很好的区分地形时面的有用信息[2];所以要将原始DWG数据格式文件转换为Shape格式文件。应用ArcGIS的3DAnalyst功能生成不规则三角网TIN格式文件及ArcGIS Binary GRID文件。因为ArcInfo转出的DEM格式Creator不能识别,可以通过Glob鄄alMapper软件BinaryGRID格式转换成Creator识别的USGS DEM格式[3]。基于CAD所生成的DEM格式文件如图2所示。 图2基于CAD的DEM格式文件图3建模地形窗口 4Multigen建模处理 4.1高程数据的转换 打开Multigen Creator,新建一个文档;借助Creator平台的Terrain模块的DED Builder工具,可以将DEM格式文件生成Creator自身的高程数据格式文件(DED )。 86

相关文档
相关文档 最新文档