opengl 学习心得体会
篇一: opengl 学习总结
OpenGL 学习总结
一. OpenGL 是做什么的
一种图形硬件的接口。而不是像 C 和 C++一样的编程语
言,更像是一个运行库,提供一些预先封装的函数。
二. OpenGL 的主要功能是什么
建模,变换,颜色模式设置,光照和材质设置,纹理映 射,位图显示和
图像。
三. OpenGL 的体系结构是什么
最底层为图形硬件,第二层为操作系统,第三层为窗口
系统,第四层为 OpenGL 第五层为应用软件。
四. 怎么样利用 OpenGL 来实现我们想要做的事情
首先要明白一点,OpenGL 是一个与平台无关的三维图形 接口,操作系
统必须提供像素格式管理和渲染环境管理。因 此要使用 OpenGL 来做我们想
做的事情的时候,一定要先为 OpenGL 搭建一个窗口环境。 在这个窗口环境
中, 我们才能够 使用 OpenGL 来实现我们自己的目的。
另外要注意的是 OpenGL 应用的不是保留模式,而是直 接模式。即我
们去操作的并非是已经封装好的一些建好的图 形信息,而仅是相当于操作一
个图形界面。也就是说如果我 们要画一个复杂的形体,我们要把这个形体的
几何信息,包 括点、线和面的一些信息包括进去,然后使用一定的方法, 把
这些基本的信息合起来,构成我们要创建的那个物体。
五.绘制图元能干什么
此处我们当明白, OpenGL 能够绘制复杂和有趣的图形, 但这些图形
都是由几个为数不多的基本图形元素构建而成 的。所以,能够绘制图元是我
们构建一个复杂有趣图形的一 个基础。这些基本的图元,包括点、线和面。
glBegin();
glEnd();
六.变换能干什么 当我们绘制出一个复杂或者简单图形的时候,我们要
把 这个图形显示到我们的电脑屏幕上。这个时候我们可能会需 要用到变换,
变换的目的是让我们能够从一个合适的角度, 观察到我们对图形中所关注的
那部分。 变换包括, 视图变换, 模型变换,投影变换。经过这几个变换中
的一个变换、几个 变换或者几种变换的相互组合,我们可以得到我们想要达
到 的效果。
七.光照能干什么 我们绘制图形的时候要深切地知道一个事情。那就是
我 们做出的图形可能需要有 3D 效果,或者说需要让我们做出 来的模型更加
的有立体感,并和实际的物体尽量的接近。这 个时候,我们可能要加上光
照。光照让我们做出的模型更加
立体
光照模型、明暗处理、光源设置、材质定义。
真实感图形绘制是计算机图形学的一个重要组成部分, 它综合利用数
学、物理学、计算机科学和其他科学知识在计 算机图形设备上生成象彩色照
片那样的具有真实感的图形。 在计算机图形设备上生成真实感图形须完成以
下四个步骤:
一是用建模,即用一定的数学方法建立所需三维场景的 几何描述,场景
的几何描述直接影响图形的复杂性和图形绘 制的计算耗费;二是将三维几何模
型经过一定变换转为二维 平面透视投影图;三是确定场景中所有可见面,运用
隐藏面 消隐算法将视域外或被遮挡住的不可见面去除;四是计算场 景中可见
面的颜色,即根据基于光学物理的光照模型计算可 见面投射到观察者眼中的
光亮度大小和颜色分量,并将它转 换成适合图形设备的颜色值,从而确定投影
画面上每一象素 的颜色,最终生成图形。
简单光照模型:当光照射到一个物体表面上时,出现 三种情形。
只考虑被照明物体表面的反射光影响,假定物体表面光 滑不透明其由理
想材料构成,环境假设为白光照明。 反射,慢反射和镜面反射。
创建光源,启动光照,明暗处理(在计算机图形学中, 光滑的曲面表面
常用多边形予以逼近和表示,而每个小多边 形轮廓(或内部)就用单一的颜色
或许多不同的颜色来勾画 (或填充),这种处理方式就成为明暗处理。 )
材质:材质颜色,材质定义
OpenGL 用材料对光的红、 绿、蓝三原色的反射率来近似 定义材料的
颜色。象光源一样,材料颜色也分成环境、漫反 射和镜面反射成分,它们决
环境
定了材料对环境光、漫反射光和 镜面反射光的反射程度。
八.颜色能干什么 颜色生成原理,计算机屏幕上每一个点的颜色都是由
监 视器内部的电子枪激发的三束不同颜色的光混合而成。
两种颜色模式:RGB( RGBA 模式和颜色表模式。在 RGB 模式下,所有
的颜色定义全用 RGBE 个值来表示,有时也加
上 alpha 值。颜色表模式下,每一个象素的颜色是用颜色表 中的某个颜色
索引值表示, 这个颜色索引值指向了相应的 R、
G、 B 值。
glcolor*();gllndex*();
单调着色( flat )和平滑着色( smooth )
颜色的作用之一是能让我们做出的图形的 3D 效果更好。
用法:
九.混合,抗锯齿,雾,多边形偏移,这些干什么 当我们想通过一个颜
色的物体,看到另一个颜色物体的 时候,这时候要使用混合的功能。
OpenGL 会把源颜色和目标 颜色各自取出, 并乘以一个系数 (源颜色乘以的
系数称为 “源 因子”,目标颜色乘以的系数称为 “目标因子” ),然后相
加, 这样就得到了新的颜色。原因子和目标因子是可以通过 glBlendFunc
函数来进行设置的。 glBlendFunc 有两个参数, 前者表示源因子,后者表
示目标因子。
图形绘制到屏幕时,光栅化图像通过离散的像素点来表 示,如此绘制出
来的图元会产生锯齿。而抗锯齿则是一种处 理,通过这种处理可以在一定程
度上消除锯齿的影响,增强 显示效果。 glHint() 来对图像质量和绘制速度
之间的权衡作 一些控制。
为了让我们做出来的图形和真实的景物,自然中的景物 更加的逼近,要
加上一个特效即雾。有了雾的效果,场景看 起来才会更加真实。在 OpenGL
中,实现雾的效果。其工作 模式有两种:线型模式和指数模式。两
种模式是根据雾的浓度变化来区分的。线型模式中,提 供一个距离视点
的开始位置和结束位置。从开始到结束,雾 的浓度越来越高。浓度变化和距
离成正比。指数模式下,雾 的浓度随着距离增长呈指数增长。这种模式常用
来用于烟雾。 烟幕 效 果 。 开 启 glEnable(GL_FOG) , 取 消 雾 的
效果 glDisable(GL_FOG) 。 线框和填充物体重合时,看起来可能 很丑
陋;使多边形偏移,改变其深度值,可以使带轮廓的物 体更美观。着重显示
实心物体边缘时,可以用 GL_FILL 绘制 这
个物体,再用 GL_LINE 重新绘制这个物体。
十.为什么使用显示列表
显示列表是一组存储在一起的 OpenGL 函数,是由一组
预先存储起来的留待以后调用 OpenGL 函数语句组成,当调 用这张显示列表
时就依次执行表中所列出的函数语句。
其优势是 OpenGL 显示列表的设计能优化程序运行性能,
尤其是络性能。它被设计成命令高速缓存,而不是动态数据 库缓存。即一旦
建立了显示列表,就不能修改它。因为若显 示列表可以被修改,则显示列表
的搜索,内存管理的执行等 开销会降低性能。如此,也就失去了其最大的优
势。显示列 表方式绘图比瞬时方式快,尤其是显示列表方式可以大量地 提高
络性能,当通过络发出绘图命令时,由于显示列表驻留 在服务器中,因而使
络的负担减轻到最小。在单用户的机器 上,显示列表同样可以提高效率。一
旦显示列表被处理成适 合于图形硬件的格式,则不同的 OpenGL 实现对命令
的优化
程度也不同。
显示列表的适用场合。需要注意的是并不是只要调用显 示列表就能优化
程序性能。因为调用显示列表本身时程序也 有一些开销,若一个显示列表太
小,这个开销将超过显示列 表的优越性。
矩阵操作,光栅位图和图像,光、材质和光照模型、纹
理、多边形的填充模式 void glNewList(GLuint list,GLenum mode);
void glEndList(void);
void glCallList(GLuint list);
十一.纹理,和绘制像素,位图,字体,图像 当我们想要使绘制出
的模型显得更加得真实,此时我们 可能需要给图形加上纹理,尤其是真实感
的物体。纹理映射 的方式,让我们在绘制真实感图形的时候,变得简单。纹
理 映射能够保证在变换多边形时,多边形上的纹理图案也随之 变化。
纹理映射的基本步骤:定义纹理,控制滤波,说明映射 方式,绘制场景
——给出顶点和纹理坐标和几何坐标。
纹理映射只能在 RGBA 方式下执行,不能运用于颜色表 方式。
计算机保存图象的方法有两种:矢量图和像素图。矢量 图保存了图象中
每一个几何物体的位置、 形状、大小等信息。 像素图是将完整的图像纵横分
为若干行、列,这些行列使得 图象被分割为很细小的分块,每一分块称为像
素,保存每一 像素的颜色也就保存了整个图像。
glReadPixels: 读取一些像素, 把已经绘制好的像素 (可 能已经被
保存到显卡的显存中) 读到内存。 glDrawPixels : 绘制一些像素, 把
内存中一些数据作为像素数据, 进行绘制。
glCopyPixels: 复制一些像素,把已经绘制好的像素从
一个位置复制到另一个位置
OpenGL 除去点,线,多边形,的另外两种重要的数据类
型:位图和图像。这两种数据都是以象素矩阵形式存储,即 用一个矩形数组
来表示某一位图或图像。二者不同之处是位 图包含每个象素的一位信息,而
图像数据一般包含每个象素 的多位信息;位图类似于掩码,可用于遮掩别的
图像,而图 像数据则简单地覆盖先前已经存在的数据或与之混合。
十二.帧缓存
颜色缓存 color buffer 其中内容可以是颜色索引或者
RGBA 数据,如果用 OPENGL^统支持立体图,则有左右两个 缓存。
深度缓存 depth buffer 就是 乙 BUffER,用于保存像素
Z 方向的数值,深度大的被深度小的代替,用以实现消隐。
模板缓存 Stencil Buffer 用以保持屏幕上某些位置图 形不变,而
其他部分重绘。
累计缓存 Accumulation buffer 只保存 RGBA 数据,用
于合成图象。
glGetIntegerv() 查询每个像素占据的缓存空间的参数。
颜色缓存存储了颜色索引或 RGB 颜色数据,还可能存储
了 alpha 值
支持立体观察 stereoscopic viewing 的 OpenGL 实现有
左颜色缓存和右颜色缓存,它们分别用于左立体图象和右立
体图象
深度缓存,存储了每个像素的深度值,通常是离视点的 距离,因此深度
值大的像素会被深度值小的像素覆盖。
累积缓存也存储 RGBA 颜色数据,将一系列的图像合成 一幅图像。 可
以对图像进行超量采样, 然后对样本进行平均, 并将结果写入颜色缓存中,
从而实现场景反走样,不能将数 据直接写入累积缓存,累加操作总是针对一
个矩形块的,通 常是将数据移入或移出颜色缓存。
清空缓存 指定要读写的颜色缓存 写入 glDrawBuffer(); 读取
glReadBuffer();
屏蔽缓存:设置掩码,用于控制写入到指定缓存中的数 据。
禁用深度缓存:如果背景很复杂,则在背景绘制之后, 禁用深度缓存,
绘制新增物体, 只要不相互重叠。 下一帧时, 只需要恢复数据图像,无需
恢复深度缓存中的值。
十三.求值器
计算机图形学中,所有的光滑曲线、曲面都采用线段或 三角形来模拟,
为了精确地表现曲线,通常需要成千上万个 线段或三角形来逼近,这种方法
对于计算机的硬件资源有相 当高的要求。然而,许多有用的曲线、曲面在数
学上只需要
用少数几个参数(控制点等)来描述。这种方法所需要的存 储空间比线段、三
角形逼
近的方法所需要的空间要小得多,并且控制点方法描述 的曲线、曲面比
线段、三角形逼近的曲线、曲面更精确。
求值器可以创建以 Bezier 为基础的样条和表面。如果 想要使用求值
器绘制基于其他算法的曲线和表面,必须知道 如何把它们转换为 Bezier 曲
线和表面。另外,如果想使用 求值器来渲染 Bezier 曲线和表面的一部分,
需要对它们的 分割粒度做出决定。在做出这些决定时,需要在图像质量和 渲
染速度之间进行权衡。 为了使用求值器,首先需要定义 函数 C() 或
S() ,然后启用它,并使用 glEvalCoord1 或 glEvalCoord2() 函数代
替 glVertex() 函数。按照这种方 式,我们可以像使用其他顶点一样使用
曲线或曲面上的点。
十四.选择和反馈
建立允许用户选择 (select) 屏幕区域或拾取 (pick) 绘 制在屏幕
上的物体的应用程序
利用 OpenGL 的反馈( feedback )模式获取绚染计算结 果
有些图形应用程序只绘制两维和三维物体构成的静态 图形,另一些允许
用户识别屏幕上的物体并移动、修改、删 除或用其它方法操纵这些物体。
OpenGL 正是设计用于支持这 些交互式应用程序的。因为绘制在屏幕上的物体
通常经过多
次旋转、移动和透视变换,所以确定用户选中了三维场景中
的哪个物体会很困难。OpenGL 提供了一个选取机制可惟自动 告诉你哪个物体
被绘制在窗口的提定区域里。你可以用这个 机制与一个工具例程 (a
special utility routine) 一道决
定哪个物体在用户说明或用光标选取的区域里。
选择(selection) 实际上是 OpenGL 的一个操作模式;反
馈(feedback)是这类模式中的别一个。在反馈模式中,你用 你的图形硬件
和 OpenGL 完成通常的绚染计算。但与用这个 计算结果去在屏幕上绘制图形
相反, OpenGL 返回(或反馈
(feeds back) )这些绘制信息给你。如果你想在绘图仪而不 是屏幕上绘制
图形, 举个例子, 你就得在反馈模式绘制它们, 收集绘制指令,然后将这
些指令转换为绘图仪可以理解的命 令。
在选择和反馈模式中,绘制信息返回给应用程序而不是 像在渲染模式中
那样送往帧缓冲。因此,当 OpenGL 处于选
择或反馈模式时,屏幕将被冻结-没有图形出现
“选择 (Selection) ” 讨论怎样使用选择模式和相关的 例程以使你
程序的用户能拾取画在屏幕上的物体。 “反馈
(Feedback) ” 描述了怎样获取有关什么将被画在屏幕上的 信息和这些信
息是以什么格式组织的。
附录
OpenGL 绘图的基本过程:
1. 清除缓冲区
缓冲区是用来保存绘图过程中产生的图像数据的内存 区域,OpenGL 有
颜色、深度、累积和模板等四种常用的缓冲 区。
由于缓冲区中可能保留有上一次绘图遗留下来的图像 数据,这些数据会
影响本次绘图,因此在绘制新图之前必须 将它们清除掉。颜色缓冲区中存放
的是图像的像素颜色数据, 深度缓冲区存放的是用于图像消隐的深度信息。
在一个三维 场景中,距离视点较近的物体肯能部分地或全部地遮挡住距 离视
点较远的物体。将被遮挡的部分消去不显示的技术称为 图像消隐技术。
清除缓冲区的两个步骤:设置清除值和清除缓冲区
篇二: OpenGl 学习总结
架 ...
1 openGl 基本 框
介 ...
... 2
Opengl 简
.. 2
openGl 的 工 作方
4
式 ...............................
... 3
构
.................
Opengl 体 系 结
........... 3
线
.................
openGl 流 水
3
机
.................
OpenGl 状 态
4
骤
.................
OpenGl 操 作 步
... 4
OpenGl 组
成 ...............................
8
OpenGl
型 ...............................
.... 5 OpenGl 函 数 命 名 约 定
........................... 5
2. Linux Mesa 安 装
......... 6
下 载 Mesa 软 件 包 .............
... 6
2..2 For DRI and hardware
acceleration .......................
..................... 7 整理安装步 骤
11
........... 11
3.
介 ...............................
包 ...............................
........... 8
包 .......
安 装其 他
.. 9
安 装 dri2proto 和 libdrm
pixman .
.. 9
编 译 安
装 .......
... 10
安 装
glut ....
下载 mesalib 和 gul
t
OpenGL 简
OpenGL ..........................
...... 11
OpenGL
一些 概
念 ............
... 12
OpenGL 是
一个状 态
机 ............
............ 13
OpenGl
渲染 管
线 ............
.. 13
显 示 列
表 ............
... 14
求 值
器 ............
什 么 是
14
15
作
光栅
化 ...............................
基于顶
作 ...............................
.......................... 14
图
配 ...............................
... 14
像
作 ...............................
... 15
纹
配 ...............................
点的操
元装
素操
理装
15
14
15
作
片 段操
16
18
动 画 ............................
............. 16 暂停刷 新 ...
... 16
动 画 = 重 绘 + 交 换
..................... 17 OpenGl 废 弃 机
制 ...............................
.. 17
4. 状 态 管 理 和 绘 制 几 何 物 体
箱 ...............................
....... 18 清除
口 ...............................
... 18
指定
19
1 openGl 基本框架
Opengl 简介 openGl 的工作方式 Opengl 体系结构 openGl 流水
线 OpenGl 状态机 OpenGl 操作步骤 OpenGl 组成 OpenGl 数据类
型 OpenGl 函数命名约定 篇三:OpenGL 学习心得
OpenGL 学习心得
第一次接粗 OpenGL 完全是我们 SRP 老师齐全老师的介 绍,当时的时
候我们的组长牟三福同学邀请我和同意一组做 SRP OpenGL 的确是个挺有意
思的东西,从最开始的配置 OpenGL 运行环境,到开始画出一条线,一个
面,再到后面画 出旋转体,途中还是让我学到了很多很多在一般课堂所没有
的知识和积累了做项目的经验。
此次 SRP 能进行到了现在这个阶段,首先得感谢我们的 辅导老师,齐
全老师。从我们 SRP 项目的申请,中期各个学
习的分配,老师一路上一直不断的支持我们,鼓励我们。我 们在每周五的时
候开一次周会,汇报我们在最近一期的学习 状况和为了下一期工作做好安
排,所以我们的工作都能很好 的完成。
说下我在学习 OpenGL 的过程中的些事吧,其实在最开 始学习这门语
言的时候还真有些琢磨不住,里面却是有好多 好多的东西是我在课堂学习所
没见过的,学习的过程中碰到 了很多的困难,有时候去到上去找资料的话,
还真的没找到 几个好的,符合我标准的答案,弄得人很郁闷,不过在老师
把 NEHE 老师的教程弄过来后,一下子觉得豁然开朗,我开 始从第一节的导
论,第二节的如何画图,到后面的纹理,光 效一节一节的往下面看,NEHE
的教程的确很不错, 但是学习 到后面的时候,在做魔方的时候遇到了极大
的困难,我在做 这个东西的时候大概做了两三周吧,做出来的是只能是预先
固定好的几个方向旋转,不能做到四个方向随意变换,后来 只能就此罢休,
不过让我认识到我在学习 OpenGL 的过程中 只是按着磨子画图,NEHE 勺教
程
是基础与 win32 体系架构的,我在大一,大二的时候在 这方面没有
什么基础,很多都看不懂,学下去勺时候难度一 步步加大,心也开始有点毛
了,有时候就开始怠工了,看到 OpenGL 的时候也有点怕了。幸好有我们的
辅导老师, 是他在
一旁不懈勺鼓励我们,激励我们,野食因为这样我们继续往 下面做。 开始
做光效, 做一个平台, 做这, 做那, 不断练习。
学习的一步步的深入,难度也是步步加大,困难牵扯上
很多不是 OpenGL 的的知识要点,而且而是必须了解,不过 我们还是坚持
坚持下来了, 是学习知识, 同时也是积累经验。 在这个做 OpenGL 的过
程中,学习到了很多做项目的知识: 想做好一个项目不是你一个人所能做到
的,你需要一个团队, 一个团结一致的团队,只有这样,你的项目才能做到
预期的 目标。
篇四:cocos2dx 下的 OpenGL 学习总结.docx
Objective:
1、 了解 cocos2dx 渲染流程,学习如何在 cocos2dx 引 擎下编写
OpenGL 代码
2、 了解 OpenGL 的渲染管线,学习 Vertex shader 和
Fragment shader 的编写,学习 shader 与 C++程序如何传做 数据传递
作者:织法 在手游如雨后春笋般上线的今天,手游的同质化极其 严
重。不同游戏间差别可能只是一层皮,在这种情况下,一 款游戏若想获得成
功,就必须有所突破,图形就是一个很好 的突破口。
在中国, CoCos2dx 是当下最流行的 2D 手游开发引擎, 其最大的
优点之一就是开源。正因为这一特点,我们可以轻 松的添加一些自己想要的
效果,尤其在图形方面。
下面,我将讲解如何在 CoCos2dx 下使用 OpenGL。 目录
一 . CoCos2dx 的 渲染 流
程 ........
.. 3
Node 的 Visite 函
数 .........
......... 3
Sprite 的 draw 函
数 .........
........... 5
render 对 象 浅
析
....... 5
AutoBatch 原理 讲
解
.....................
.. 9
自 定 义
RenderCommand.....
... 12
*■ • OpenGL
简
介
.....................
.......... 13
OpenGL
渲染 管
线
.....................
... 13
Vertex
Shading ..........................
................ 14
Primitive
Assembly .........................
............ 14
Clipping
15
Rasterization .......................
...................... 15
fragment
shading .........................
............. 16
Pre-Fragment
Operations ........................
...... 16 一个简单的着色器程 序
................. 17
VAO 与 VBO
20 彩色的三角
形 ...............................
........................... 22
shader 语 法 简 介
24
29
.................. 24
变量的转 换
.................. 25
Vector Component
Accessors ........................
... 26
shader 的 结 构 .................
............... 26
中的内置变量与内置函
27
cocos2dx 提 供 的 内 置 变
量 ...............................
... 27
三 3D 图 元 的 绘
制 ...............................
MVP
变量
明 ...............................
的声
3D
幻 ...............................
...................... 29
投影矩 阵 ........................
.................... 30
一. Cocos2dx 的渲染流程
要想了解如何在 cocos2dx 引擎下编写 OpenGL 代码,首 先要知道这
些代码应当写在哪里。而 cocos2dx 这个引擎的 渲染模块,正是基于
OpenGL 的 API 来编写,我们可以研究 一下他的渲染流程。
Node 的 Visite 函数
打开 cocos2dx 引擎中的文件,翻到 Visit 处,可看到 以下代码,
如图所示。
图 Visit
Node 的 Visite 先从导演类中取得渲染器 Render 对象, 在从矩
阵栈中获取当前的 modelView 矩阵。再把他们传入带 3 个参数的 Visit
中。下面我们看看这个函数都做了些什么, 如图, 所示
图
visit1
图 visit2
我们可以看到,当 visible 为 false 时,函数直接被 return
掉。之 后先 向 栈 中推 入一 个 矩 阵, 在把 当 前的
modelView 矩阵放入栈中。而后就是我们熟悉的遍历过程。
先遍历 Z-order 小于 0 的,绘制,而后是大于 0 的。这也就 揭示了
zorder 是如何控制渲染层级的, 也揭示节点树的绘制顺 序。
Sprite 的 draw 函数
下面,我们看一下精灵类 draw 到底做了些什么。打开 引擎的文件,
翻到 draw 处,其代码如图所示。
图 Sprite::draw 我们可以看到,传说中的渲染剔除,就是在这里做
的。
而且就是一个 AABB 的判断。这函数的主要功能,就是把相
关信息放入一个 command 中,传到了 render 对象中。
render 对象浅析
下面,我们将详细分析下这个 render 对象。
首先,我们找 6 张可爱的水果图片,在 helloworld 中 重复添加这
些图片,运行效果如图所示。
篇五:计算机图形学学习的心得体会
对计算机图形学课程学习的心得体会 通过一个学期的学习,了解了什
么是计算机图形学、什 么是图形 API、为什么需要计算机图形学以及计算机
图形学 在各个领域的应用。计算机图形学是一种使用数学算法将二 维或三
维图形转化为计算机显示器的栅格形式的科学,研究 的是应用计算机产生图
像的所有工作,不管图像是静态的还 是动态的,可交互的还是固定的,等
等。图形 API 是允许程 序员开发包含交互式计算机图形操作的应用而不需
要关注 图形操作细节或任务系统细节的工具集。计算机图形学有着 广泛的
应用领域,包括物理、航天、电影、电视、游戏、艺 术、广告、通信、天气
预报等几乎所有领域都用到了计算机 图形学的知识,这些领域通过计算机图
形学将几何模型生成 图像,将问题可视化从而为各领域更好的服务。
计算机图形学利用计算机产生让人赏心悦目的视觉效 果,必须建立描
述图形的几何模型还有光照模型,再加上视 角、颜色、纹理等属性,再经过
模型变换、视图变换、投影 操作等,通过这些步骤从而实现一个完整的
OpenGL 程序效 果。OpenGL 是一个开放的三维图形软件包, 它独立于窗
口系
统和操作系统,以它为基础开发的应用程序可以十分方便地 在各种平台间移
植。计算机图形学通过应用 OpenGL 的功能, 使得生成的图形效果具有高度
真实感。学习计算机图形学的 重点是掌握 OpenGL 在图形学程序中的使用方
法。
21 世纪是信息的时代, 在日新月异的科技更新中相信计 算机会发挥
越来越重要的作用,计算机图形学也会在更多的 领域所应用,虽然我国在这
方面还比较薄弱,但相信会有越 来越好的时候的。
篇六:软件开发心得体会
软件开发心得体会
受某文化公司委托,开发一款用于视频和图像处理的 软件,开发难
度高,高到从未搞过,开发周期长,长到是我 以前项目监控最长开发周期的
两倍,开发成本之底,让我觉 得程序员成了高级打字员。首先是需求分析
书、产品规格说 明书、设计说明书、代码规范说明书、测试计划,光文稿就
不知道熬了多久才做完。
紧接着,遇到一系列问题,首先是语言选择, vc++ 和 c#
都是可以保证开发完成的选择, 但是 VC++内存容易报错,界
面很难修改,而客户要求的界面质量甚至比程序的功能更严 格,没办法,客
户就是上帝,上帝做事一定有他的道理。 C# 语言易于开发,而且图形界面
绘制也易于修改,可以做出客 户体验很好的界面,但是在资源的消耗上,让
我很吃惊。做 到第二个月, 大概的界面已经完成时, 出现界面刷新的问
题, 刷新时开始卡,界面不流畅。没办法,改。 开会,总结, 技术骨干找
问题,拿出解决方案,力争第一次做软件把它做 好:
重新做软件开发进度计划和软件测试计划,并且让独立 功能 demo 制
作和测试先行;
用 direCt draw 、direCt 3d 或者 opengl 中的一个替代
c#本身的 gdi 绘图,将在接下来的开发任务中加入进去 事无巨细, 当我满
意的看着界面流畅, 功能也已实现时, 发现软件在低分辨率或者小本上根
本乱到没法看,甚至是界
面功能按钮错位,重叠等等。没办法,改。毕竟软件的多分 辨率兼容和操作
系统兼容是必须要做的。
接下来一大堆的麻烦找了上来,软件出现各种各样想都 想不到的问
题,总算是按时将第一个版本发布出去,并且开 始接下来的升级开发任务。
最后,给刚刚接手软件开发项目的朋友一些忠告:
一、相关的文档不是给别人看的,而是给自己看的,相 关文档一定要
齐备,而且让所有涉及开发的人员都清楚的知 道你文档里所要表达的意思;
二、 一定要注意多做 demo,多做实验,一个 demo 程序
员几个钟头就可以完成,甚至更少,但是不做 demo,核心程
序没有做实验,其他的东西都围绕核心程序做了上去,到时 候耽误的可不是
几个钟头
三、 程序设计要注重用户体验,当初客户对我要开发软 件提出近乎苛刻
的要求时我不在意,但是当我自己反复使用 软件时有了很多体会,流畅美观的
界面带给人心理的快感的 确能替代一些尚未开发完整的功能带给用户的遗
憾。
四、 测试计划多次进行,分批进行,不要全部开发完成 再对软件做测
试。
还要坚持三个月,软件马上发布,希望大家的支持,谢
谢!!!
软件开发心得体会( 2):
作为 pm,有时需要招聘软件开发人员。这几年也一直 在想,如何能在
短短的 30 分钟或 1 小时内,快速识别出, 坐在你对面的应聘人员, 是否
适合你的 team。这几年也一直 在观察和反思,经历过的 team 和现在
team 中的软件开发人 员。有几点小的心得。
1. 倾向于招什么样的软件开发人员
- 经历过历练的人 吃过苦的,比如以前工作,经常被外派出差,又如
曾在
业内都知道以加班多而著称的公司呆过,还有些,留过学, 但都是自己边打
工边读书的,等等。
这些人员,入职后,通常都是能干活,能作为骨干。
- 思路清晰,思想活跃的人 让谈谈自己现在的产品,如果能清晰表
述,有条理,会
发散,但又能适当控制住,并收回到原话题。谈到技术问题 和解决过的难题
时,眼中有光芒: )
这些人员,今后工作中,学习能力强,对解决难题有帮 助,能作为中
坚。
- 坦诚、坚定、平和的人 面试中,坦诚,目光坚定。有时坦诚到甚
至于显得有点 木讷:)
我曾经遇到一个,面试下来,我最后介绍我们产品中用 到的技术,他
对这些技术知之不多,最后他说,我可能不是 非常适合, 我知道一个朋
友, 他可能更适合。 我综合评估后, 最后还是选了他,事实证明,他后来
做的很不错。
坦诚坚定的人,会有恒心去学习,去解决问题。这些人 员会作为
team 的基石。
- 有缺陷的人才
这是一个朋友 (lance )的想法, 我认为还是有道理的。 大公司,
会看重综合素质,而如果是小公司,可以考虑 选择一些有缺陷的人才。所谓
有缺陷,是指,比如他英语很 差,或沟通不清晰, 但他能用程序员该有的
思维去思考问题。 这样的人员,通常进不了大公司,故会相对踏实地呆在一
家 公司,做好自己的工作。
2. 谨慎考虑这样的开发人员
- 太活泼,太易兴奋 太易兴奋,说到投机处,是是是是,对对对
对。 。。,又 蹦又跳,还时不时来点, oh yeah, you are right ,
然后还
摆个 v 手型。讨论问题,不易固守在技术问题本身,时常 跑到我们产品中
用到的技术(或第 3 方产品)很强,我挺他 们,不可能有问题,又或者我
们对客户要强势,我们要坚持 我们的产品没问题。
软件开发工作本身,显得比较沉闷,优秀的技术人员,
都略显有些内向, 因为解决问题, 很多时候需要耐得住寂寞, 时刻保持相
对冷静。
太活泼的人,会在遇到问题之初,表现出很强的冲劲, 但当长时间不
能解决时, 会表现出没有耐心, 会经常抱怨 (对 team、管理、产品、流
程等),非常情绪化。有些女程序员 还会吵,会哭,这时项目经理只能放下
手中的活,下去给她 买点零食来哄哄,莫哭,这里有你最爱吃的猫哆哩。一
边擦 着鼻涕、眼泪,一边嘴里塞满东西,鼓鼓啷啷这是酸角口味 的,那个
西番莲口味的才叫好吃 ...
这些通常不太容易在面试时表现出来,在试用期时,要 观察。
篇七:学习 Ios 的感受
学习 Ios 的感受
我在学校学习的时候学习了,我叫赵宾战,我的 QQ:
552896028,通过学习我掌握了以下几点:
1 mac os 操作系统的安装,使普通笔记本变成苹果本。 2 操作系
统,文件系统介绍、基本使用方法及常用软 件安装与介绍, 3 Xcode 工具
的安装,编程环境功能详细
介绍,不同工程环境的创建和区别。工程基本代码结构和运 行机制、资源文
件的管理和使用、工程的配置
4 Objective-C 程序设计 基本语法,类与对象,消息
的传递,扩展与继承,多态,异常处理,静态对象与方法, 内存管理,多线
程,各种错误提示处理和断点调试
5 cc++编程基础
6 xcode interface Builder 介绍,在 Interface
Builder 中建立关联的机制和作用。
7 xcode 拖拽法和代码法混用可视化开发。
8 iPhone UI 控件 UlWindow、UlScreen、UlView、
UIViewController 、 UIScrollView 、 UIButton 、 UIImage、
UlSegmentedControl,
UlTableViewControllerUlTextField 、 UlTextView,
UlSlider 、 、
UlActivitylndicatorViewUlNavigationController ,
UlTabbarController, UlWebView.
9 基于 UI 的游戏开发技巧。 UI 实现打地鼠游戏,UI
实现飞机射
击游戏。
10 iPhone 络编程 CFNetwork 各种常用类介绍, HTTP 通 信框架与
应用。 基于 NSURLConnection 的通信技术, NSUR,L NSURLReques,
t UIWebView, NSMutableURLRequest。 Socket 应用。 11 cc++ 编
程基础
12 使用 java 搭建 web 服务器实现模拟通信。使用 c 语 言建立
服务器实现 socket 通信。
13 coco2d 技术 导演与视图切换,粒子效果,精灵创建 与运动 14
3d 仿射技术 2d 图形处理实现 3d 效果
15 opengl 基本绘图处理 opengl 环境的搭建,图形绘 制原理,矩
阵 16 opengl 3d 开发基础 顶点缓冲, 纹理绘制, 3D 旋转处理,3d 运
动与缩放
17 ipad 与 iphone 开发的区别, ipad 开发技巧
18 流媒体技术。 多种格式的视频流媒体传输与播放。
19 常用加密技术。
20 工程发布流程 帐号申请,证书下载与安装,程序 发布
这个培训机构叫智游 3G 培训,专注于 3G 技术,紧跟 3G 技术发展潮
流。是胡臻教授于 XX 年创建的一家知名 iOS 高 端培训机构。
公司拥有年轻和干练的师资和研发团队,着力打造全国 最专业的 3G
实训和终端产品开发队伍。目前公司已经是华 中地区规模最大的 ios 软件
实训基地,已经培训了五百多名 来自不同高校的高级 3G 软件工程师,为郑
州大学,河南大 学,河南理工,中原工学院,华北水利
等院校赢得了声誉,在业界获得了广泛的关注。南阳理 工学院是郑州
智游职业培训学校定点 ISO 培训独家合作院校。 在河南地区处于绝对领军
地位。
郑州智游职业培训学校是由互联行业中著名企业、跨国 公司的技术领
袖、资深专家、及 IT 业投资人发起,并且只 选聘拥有多年经验的技术专家
任教及担任教学管理,目标是 培养学员成为行业中的佼佼者和未来的技术专
家。
郑州智游职业培训学校拥有众多的合作就业方,其中包 含创新工场,
上海耶客,盛大络,腾讯游戏,机客,掌上明 珠,杭州渡口,几年来为这些
行业内领军企业提供了高素质 的开发人才。在业内赢得了口碑。
郑州智游职业培训学校提供了现代化的教学环境:全投 影教学,良好
的环绕立体声扩音设备。以及专门定制的桌椅 和电源系统。无不体现郑州智
游职业培训学校的专业品质。 此外郑州智游职业培训学校还提供高档的住宿
环境。学生宿 舍每个房间都安装了空调设备,每个房间都配备了卫生间,
配备热水器。无线络。在学习之余可以放松下自己的心情, 让身心充分的得
到休息。
郑州智游职业培训学校重视教学质量,采用的教材完全 是自己编写,
拥有独立知识产权。郑州智游职业培训学校对 每个学员都因材施教,采用一
对一补课模式让学员巩固学习 成果,让每个学生都能学到真本事。郑州智游
职业培训学校 就业部对学员保证 100%高薪就业率, 让每个学员都找到好工
作。对于领悟能力比较差的学员,我们采用免
费留级的办法强化学习效果。郑州智游职业培训学校的 课程体系是行
业内最有特色的课程设计, 特点是: 知识点全, 知识量大,循序渐进,易
于掌握。大量的实例教学,和实战
紧密结合
我们的学生宿舍坐落美丽的远大理想城,位于郑州经济 技术开发区,
航海东路与朝凤路交汇处北,距离我们上课的 地方,步行大约 10 分钟的路
程。 周围环境优美, 交通便利。
学生宿舍远大理想城简单介绍:交通: 33、 35、 727、
59、46、129、55、505、307 路、 B17 商业:丹尼斯,满亿 100 连锁便
利岔河店, 家祥超市。 内部配套: 中餐厅, 超市, 美容美发, 娱乐中
心。 周边医院: 骨伤医院、 第七人民医院, 郑州市第八人民医院,博康
诊所,华中医药超市安康药房。 周边学校:开发区实验小学、八十五中、十
一中、 63 中。周 边银行:工商银行航海华中分理处,交通银行郑州航海东
路 支行。周边环境: 银河战舰吧, 路亦吧航海路店, 足疗按摩, 东航诜
浴中心,世纪欢乐园。
篇八:图形学实验报告 OpenGL 中的变换
《计算机图形学基础》
实验 6 OpenGL 中的变换
一、实验目的及要求
1. 理解 OpenGL 中的各种变换的实现原理;
2. 掌握 OpenGL 中模型视图矩阵的操作方法。
3. 掌握 OpenGL 中投影变换的实现方法。
二、实验环境
主要是软件开发环境 VC 三、实验内容
1、分子动画示例
2、深度测试示例
四、实验结果 1、分子动画
五、程序代码
1. 分子动画
#include
void Initial()
{
}
void ChangeSize(int w, int h)
{
if(h == 0) h = 1; glEnable(GL_DEPTH_TEST); // 启
用深度测试 glClearColor(, , , ); // 背景为白色
glViewport(0, 0, w, h);// 设置视区尺寸
glMatrixMode(GL_PROJECTION); // 指定当前操作投影 矩阵
堆栈
间
}
void Display(void)
{
static float fElect1 = ; // 绕原子旋转的角度
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW); glLoadIdentity();
GLfloat fAspect; fAspect = (float)w/(float)h;// 计算
视区的宽高比 gluPerspective(, fAspect, , ); // 指定
透视投影的观察空 glLoadIdentity(); // 重置投影矩阵 // 清除颜色和
深度缓冲区
glMatrixMode(GL_MODELVIEW); // 指定当前操作 模型视图矩阵
堆栈
glLoadIdentity();// 重 置 模 型 视 图 矩 阵
glTranslatef(, , -); // 将图形沿 z 轴负向移动
glColor3f(, , ); glutSolidSphere(, 15, 15);// 绘
制红色的原子 glColor3f(, , ); glPushMatrix();// 保存
当前的模型视图矩阵 glRotatef(fElect1, , , );// 绕 y
轴旋转一定的角度 glTranslatef(, , ); // 平移一段距离
glutSolidSphere(, 15, 15); // 画 出 第 一 个 电 子
glPopMatrix(); // 恢复模型视图矩阵 glPushMatrix();//
保存当前的模型视图矩阵 glRotatef(, , , ); // 绕 z 轴 旋 转 45 °
glRotatef(fElect1, , , );glTranslatef(-, , );glutSo
{
lidSphere(, 15, 15); // 画出第二个电子 glPopMatrix();
// 恢复模型视图矩阵 glPushMatrix(); // 保存当前的模 型视 图 矩阵
glRotatef(-,, , ); // 绕 z 轴 旋 转 -45 °
glRotatef(fElect1, , , ); glTranslatef(, , );
glutSolidSphere(, 15, 15);// 画出第三个电子