![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenGL资料
Ingenuus
这个作者很懒,什么都没留下…
展开
-
第一讲 基本概念
第一讲 基本概念 前言 随着计算机多媒体技术、可视化技术及图形学技术的发展,我们可以使用计算机来精确地再现现实世界中的绚丽多彩的三维物体,并充分发挥自身的创造性思维,通过人机交互来模拟、改造现实世界,这就是目前最为时髦的虚拟现实技术。通过这种技术,建筑工程师可以直接设计出美观的楼房模型;军事指挥员可以模拟战场进行军事推演,网民可以足不出户游览故宫博物馆等名胜古迹等。而虚拟现实技术最重要的一部转载 2007-11-12 13:33:00 · 1016 阅读 · 0 评论 -
第十四讲 像素操作
本节讲解像素操作。 例14:本例在窗口绘制一个三角形,然后利用glCopyPixel函数拷贝了五次该图形,并将这五个三角形放置在窗口的不同位置。 #include #include /*设置背景色*/void myInit(void){ glClearColor(1.0,1.0,1.0,1.0);}/*绘制彩色三角形*/void t转载 2007-11-12 14:59:00 · 903 阅读 · 0 评论 -
第十五讲 动画制作
到目前为止我们所做的图形全部都是静止的。而OpenGL的是一个可以制作大型3D图形、动画的工具。下面我们做一个可以旋转的立方体。 例16:一个旋转的立方体 #include GLfloat X = 10.0f;GLfloat Y = 1.0f;GLfloat Z = 5.0f;void myDisplay(void){ GLfloat转载 2007-11-12 15:01:00 · 1117 阅读 · 0 评论 -
第十六讲 菜单管理
菜单是我们经常使用的工具,很方便,直观。本节讨论在OpenGL中如何进行菜单管理。 例17:本例在蓝色的背景上绘制一个白色的正方形,在窗口内单击鼠标右键,弹出菜单,当选择不同菜单项时命令窗口会显示出是哪个菜单的哪个菜单相被激活。本例一个主菜单,主菜单有3个菜单条目及两个子菜单。两个子菜单都有3个菜单条目。 #include #incl转载 2007-11-12 15:02:00 · 1283 阅读 · 0 评论 -
VC2005下利用OpenGL实现三维绘图
在三维绘图蓬勃发展的过程中,计算机公司推出了大量的三维绘图软件包。其中SGI公司推出的OpenGL,作为一个性能优越的图形应用程序设计界面(API)异军突起,取得了很大的成就。它以高性能的交互式三维图形建模能力和易于编程开发,得到了Microsoft、IBM、DEC、Sun、HP等大公司的认同。因此,OpenGL已经成为一种三维图形开发标准,是从事三维图形开发工作的必要工具。 1、初始化Ope转载 2007-11-12 15:06:00 · 1475 阅读 · 0 评论 -
基于OpenGL动画设计研究与实现
摘 要:本文从Windows及C语言编程基础出发,重点介绍了如何使用OpenGL来实现动画的原理与方法,并通过相关实例进行了验证。 关 键 词:OpenGL,API, 双缓冲技术,渲染,计时器 1.引 言 OpenGL是一种相对新的工业标准,它的前身是由SGI公司为其图形工作站开发的IRIS GL,是一个工业标准的三维计算机图形软件接口。 OpenGL不是一种编程语言,而是一种API转载 2007-11-12 15:10:00 · 1099 阅读 · 0 评论 -
浮动窗体中的OpenGL多视图的实现
由于在工作中需要结合浮动窗体实现OpenGL的多视图,用于得到三维实体的三视图观察效果,通过参考其它资料,设计了一个程序框架,在此基础之上大家可以根据自己的需要进行扩充,实现需要的功能。 程序实现效果图 关键技术实现介绍: 一、O转载 2007-11-12 15:12:00 · 1570 阅读 · 0 评论 -
制作一个基于MFC对话框的OpenGL类
今天写了个基于MFC对话框的OpenGL类:COpenGL,可以在对话框程序中使用OpenGL了,并且提供了全屏与非全屏转换的两个函数,很容易使用,速度快。 使用方法:在对话框上加一个Static控件(或者其他的也可以),在OnInitDialog()中加人下面这段代码(假设控件ID为IDC_OPENGL,m_openGL是类COpenGL的对象):转载 2007-11-12 15:15:00 · 1905 阅读 · 2 评论 -
OpenGL实现3DS文件中的模型自由旋转
摘要 简述如何在OpenGL中, 读入和显示3DS文件中的模型,并着重阐述通过鼠标拖动对其进行自由旋转的数学基础和编程实现的方法。 关键词 OpenGL 3DS文件格式 VC++ 自由旋转 现在已经有很多论文和书籍提到在OpenGL中实现读入和显示3DS文件中的模型。但是在很多场合,仅读入和显示是不够的。我们需要从各个角度观察模 型,以便更好地理解模型的形态,形成更为直观的感性认识。例如,在转载 2007-11-12 15:18:00 · 8452 阅读 · 5 评论 -
VC下利用OpenGL构造自由型曲线曲面
摘要:本文介绍了OpenGL在三维物体建模中的应用,并在VC++下通过该技术实现了对自由型曲线曲面的模型搭建。 关键词:OpenGL;自由型曲线曲面;NURBS;Visual C++ 引言 随着计算机技术的飞速发展,计算机的性价比越来越高,为计算机图形学的发展奠定了坚实的基础。科学计算可视化、计算机动画和虚拟现实等技术在工程应用中 得到了广泛的使用,这些技术的实现离不开对真实物体的三维建转载 2007-11-12 15:20:00 · 3605 阅读 · 0 评论 -
利用VC+OpenGL实现几种特殊图形效果
引言 融合(blending)、雾化(fog)与反走样(antialiasing)是OpenGL中的三种特殊效果 处理方法。融合提供了一种透明或半透明显示的技术;雾化处理则根据物体距离视点的远近对其进行恰当的模糊处理;反走样则可减少在绘制离散化的图形时所产生 的误差走样。 实现融合特效 融合可将两种颜色的R、G、B分量按一定比例混在一起形成一种新的颜 色,RGBA颜色模式中的A即表示Alph转载 2007-11-12 15:25:00 · 1465 阅读 · 0 评论 -
第十三讲 二次几何体
这一章我们讲一下二次几何物体的绘制。二次几何物体的绘制有几种不同的方式,在本例中可以看出不同的绘制方式的不同效果,如图十五所示。 例13:本例使用GLU库函数绘制了四个几何物体,分别为圆柱体、球体、圆盘和部分圆盘。 #include #include #include /*声明四个二次曲面物体*/GLUqu转载 2007-11-12 14:57:00 · 1104 阅读 · 0 评论 -
第十二讲 绘制NURBS曲线和曲面
上一节讲了一般的曲线与曲面的绘制,本节讲NURBS曲线和曲面的绘制。 例11:此例绘制两个相同形状的NURBS曲面,不同之处是一个为线框式,一个是由实多边形组成。运行后可以看到其中的区别,如图十三所示。 #include #include GLUnurbsObj *theNurb1;GLUnurbsObj *theNurb2;GLf转载 2007-11-12 14:56:00 · 5194 阅读 · 2 评论 -
第二讲 基本图元
任何复杂的三维模型都是由基本的几何图元:点、线段和多边形组成的,有了这些图元,就可以建立比较复杂的模型。因此这部分内容是学习OpenGL编程的基础。 一、基本图元的描述及定义 OpenGL图元是抽象的几何概念,不是真实世界中的物体,因此须用相关的数学模型来描述。所有的图元都是由一系列有顺序的顶点集合来描述的。 OpenGL中绘制几何图元,必须使用glBegain()和glEnd()这一对函数,转载 2007-11-12 13:42:00 · 1285 阅读 · 0 评论 -
第三讲 一个简单的例子
先编译运行一个简单的例子,这样我们可以有一个直观的印象。从这个例子我们可以看到OpenGL可以做什么,当然这个例子只做了很简单的一件事--绘制一个彩色的三角形。除此以外,我们还可以看到典型的OpenGL程序结构及openGL的运行顺序。 例1:本例在黑色的背景下绘制一个彩色的三角形,如图一所示。 #include #include转载 2007-11-12 13:48:00 · 967 阅读 · 0 评论 -
第四讲 使用颜色
通过上一节的例子我们已经知道一些简单的使用颜色的方法。这一节我们进一步讲讲颜色的使用。 例2:本例子使用颜色引索模式绘制8个不同颜色的球体,如图二所示。阅读此例时,请主要关注函数palette和DrawColotFans。glIndex设置当前颜色索引。参数为当前颜色索引。本例中glIndexd 函数的参数j+1对应palette中auxSetOneColor函数中的i+1,auxSetOneC转载 2007-11-12 13:54:00 · 970 阅读 · 0 评论 -
第五讲 坐标变换
OpenGL通过相机模拟、可以实现计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换等,同时,OpenGL还实现了矩阵堆栈等。理解掌握了有关坐标变换的内容,就算真正走进了精彩地三维世界。 一、OpenGL中的三维物体的显示 (一)坐标系统 在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,将三维物体及二维数据联系在一起的唯一纽带就是坐标转载 2007-11-12 14:38:00 · 2816 阅读 · 0 评论 -
第六讲 堆栈操作
本节中的例子其结构和例1一样,仅改变myDisplay和myReshape。 例4:利用堆栈绘制三个物体--一个绿色的茶壶,一个蓝色的茶壶,一个红色的立方体(部分代码) void myDisplay(void){ glClear(GL_COLOR_BUFFER_BIT); /*蓝色茶壶*/ glPushMatrix(); glCol转载 2007-11-12 14:41:00 · 905 阅读 · 0 评论 -
第七讲 显示例表
利用显示列表,我们们可以减少重复的劳动。我们可以从例5中得到体会。 例5:绘制六个彩色的三角形,如图六。 #include #include GLuint listName = 1;void myInit(void){ glClearColor(0.0,0.0,0.0,0.0);//设置背景为黑色 glNewList(listNam转载 2007-11-12 14:43:00 · 768 阅读 · 0 评论 -
第八讲 使用光照和材质
使用了光照和材质可以使物体更逼真,具有立体感。例4就是没有使用光照使呈现在我们眼前的物体茶壶和立方体没有立体感。 例6:绘制三个使用不同材质的球体。 #include #include GLfloat light_position[] = {0.0,3.0,6.0,0.0};GLfloat no_mat[] = {0.0,0.0,0转载 2007-11-12 14:45:00 · 1027 阅读 · 0 评论 -
第九讲 纹理映射
纹理我们可以简单的理解为物体表面的花纹。同样的物体我们可以加上不同的纹理。我们可以使用现成的纹理也可以自己做一个新的纹理。 例7:绘制一个简单的二维纹理图,并将该图像映射到一个四边形上。 #include #include #define imageWidth 64#define imageHeight 64GLubyte imag转载 2007-11-12 14:47:00 · 1491 阅读 · 0 评论 -
第十讲 特殊效果操作
每个物体在不同的环境在会有不同的视觉效果。为了使效果更加真实需要增加特殊效果。 例8:绘制三个互相重叠的矩形,这三个矩形从左到右分别为绿、红、蓝。其中红色、蓝色矩形的透明度分别为50%的透明度,即alpha值为0.5,如图九所示。 #include #include void myInit(void){ glClearColor(0转载 2007-11-12 14:49:00 · 903 阅读 · 0 评论 -
第十一讲 曲线和曲面
计算机图形学中,所有的光滑曲线、曲面都采用线段或三角形逼近来模拟,但为了精确地表现曲线,通常需要成千上万个线段或三角形来逼近,这种方法对于计算机 的硬件资源有相当高的要求。然而,许多有用的曲线、曲面在数学上只需要用少数几个参数(如控制点等)来描述。这种方法所需要的存储空间比线段、三角形逼近 的方法来所需要的空间要小得多,并且控制点方法描述的曲线、曲面比线段、三角形逼近的曲线、曲面更精确。转载 2007-11-12 14:54:00 · 1576 阅读 · 1 评论 -
OpenGL下的场景层次化渲染
目前使用VC6.0+OpenGL图形库已经逐渐成为开发3D应用程序的主流,但是在使用OpenGL图形库中会涉及到很多2D或者3D坐标,正确理解这 些坐标的含义是使用OpenGL开发应用程序的前提,另外对于一个复杂的3D场景如果使用程序的手段来进行有效的渲染也是至关重要的。本文主要探讨这两个 方面的问题。 1. 相关基础知识 要渲染真实世界的3D物体,首先必须了解OpenGL里面的坐标系统。O转载 2007-11-12 15:27:00 · 2501 阅读 · 0 评论