发信人: CF (往事随风飘), 信区: BorlandDev
标  题: OpenGL的原理 
发信站: 哈工大紫丁香 (2003年04月10日10:21:48 星期四), 站内信件

内容说明:  
来源:  
  可以把OpenGL看成一条生产流水线,原料是场景、物体的顶点、表面细节等信
息,产品是看起来有三维感觉的平面位图。
  在OpenGL中是以面边界(B-REP)模型来描述物体的,或者说是使用多边形造型
系统。在OpenGL中每个物体都只是一组平面,这组平面记录了该物体的表面。显然
这些平面越小画出不断的物体越逼真。

生成本图的程序源码(http://chinaaspdownload.xajh.
net/delphiuser/zhuanlan/opengl_1/polymodalsrc.zip)[需要TGLPanel]而物体表
面的每个平面都只需要边界和平面上的图案就足以表示。在OpenGL中需要用户提供
围绕平面边缘的线段的顶点参数、平面内图案的位图两组信息,术语称为Vertex(
顶点)、Texture(纹理)。
  如果表示物体的平面小到一个像素那么得到图像将会是极为真实的,然而这意
味着天文数字般的计算任务。所以OpenGL三维图形程序设计很大程度上是在质量与
速度之间折中的艺术。
  在计算机三维图形学上还有诸如实体几何、Voxel等其它的方法,有很多朋友
问过我医学图象处理方面的问题,其实在该领域里使用得更多的是Voxel方法,该
方法可以很好在像素级计算生成剖面等的图像,另外象DeltaForce这个游戏也使用
了该方法。目前还没有见过支持Voxel加速的硬件,所以DeltaForce是需要全部使
用CPU计算的,而支持OpenGL硬件加速的显卡满大街都是,而且适当使用纹理也可
以取得极为逼真的效果。
总而言之,OpenGL吃进去的是顶点和纹理,挤出来的是看上去很三维的平面位图。
不知道什么是位图?!就是那个啥你在屏幕上看见那个呀。^o^
  OpenGL流水线工作的原理是咋样的呢?那可是一个复杂的过程,下面简单描述
一下,详细的自己看三维图形学的书去吧。
客户端(即咱们写的图形应用程序)==命令和数据==> 服务器(流水线)==> 帧缓
冲区
客户在程序中所发的命令和数据并不是立即传到流水线执行的,流水线在收到
glFlush/glFinish/SwapBuffers之类的命令之后才会真正开始执行命令加工数据,
这些命令都有说明某一阶段处理相关的指令数据改送已经结束请求获得所需结果的
含义。这就是所谓的客户/服务器模式。
  服务器接收哪些命令和数据,又怎样利用这些数据进行哪些处理呢?大致上可
以依次分成四个阶段:

坐标变换,生成基本图元 
裁剪,只留下视见范围内的部份 
光栅化,生成图形片段 
逐片段操作,生成素像 

 
 

--

再不学习,你就要......

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.231.2]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.365毫秒