共勉
"诸君离学校而去了。在社会上立身的困难,恐怕比在学校里求学还要加甚。若非立志奋斗,则以前所受的教育,反足以增加人生的苦恼,或转为堕落的工具。这是诸君所当特别注意的。事业的成功,须经过长时间的辛苦艰难——成功的代价,走过了许多荆棘的路,方才能寻获康庄大道。立志是砍荆棘斧斤,奋斗是劳力。万不可希望以最少的劳力,获最大的成功。" -- 蒋梦麟
Knight's Blog
滴滴海浪技术主管, 前百度资深研发工程师,现居上海。 擅长于大规模的系统平台服务架构。在

- 亿级别搜索平台(sov5.cn)
- 大规模分布式爬虫
- 中间件架设(disconf,CanalX)
- 广告平台(百度联盟广告)
- 租车平台(滴滴租车)
- 语言招聘平台(51tra.com)
- 内容平台(100weidu.com)
- 社区平台(python88.com)
- 资源下载平台(misou.com)
- 计算机图形图像技术(一篇一作)
- 机器学习(一篇一作)

等领域具有颇有经验。
联系方式: knightliao AT gmail.com
联系
Knight's Blog » 工作

ScanLine Zbuffer algorithm

2008-10-22 00:00

I’ve learned Computer Graphics(CG) for two months, but I haven’t done any projects in this field. These days, I try my best to focus on the first assignment of the “Computer Graphics” course. It’s called “Scan Line Z Buffer Algorithm”.

It takes me about ten days to finish this assignment. In this small project, I create several useful models for my future work. For example, I create “Trace” Class to debug my project. I also create a “Engine “ Class to encapsulate OpenGL and DirectX codes. So, you just have to know the interface of this engine but not to care about the OpenGL or DirectX codes. These models will be useful in my further work development. :)

After this assignment, I’ll continue to focus on the CG field, such as GPU programming.

[This is my Tech Blog. I’ll write something about my recently projects or assignments in this blog in the further. I’ll try my best to write my posts in English. However, my English is not good. I also have to study English more and more.
My Tech Blog is <a href="http://knightliao.blogspot.com/">http://knightliao.blogspot.com/</a>
My email is <a href="mailto:KnightLiao@gmail.com">KnightLiao@gmail.com</a> or <a href="mailto:liaoqiqi@cad.zju.edu.cn">liaoqiqi@cad.zju.edu.cn</a>

Thank you! :)
]

Knight’s ScanLine Zbuffer v1.0 created by Knight.Liao

一、 Direction For Use

对于场景的渲染,本程序只支持.OBJ文件的读取。使用“文件->打开”,选择OBJ文件,即可导入模型。

在选项一栏中,可以有以下三种方式的选择:

第一种是:渲染方式。渲染方式分为软件实现和硬件实现。其中软件实现即是扫描线Z缓冲器算法。硬件方式 分为两种,即是OpenGL实现或DirectX实现,二者有采用硬件加速。由于时间原因,目前还不支持DirectX的实现(有待于升级)。

第二种是:反走样。此功能只对硬件实现有效。可以开启或者关闭反走样。在开启反走样后,用硬件绘制的模型具有光滑的面片,但是会降低绘制速度。

第三种是:旋转。此种模式下支持三种方式的选择:手动旋转、自动旋转、手动+自动旋转。 这三种模式下都会计算出导入模型的面片数和顶点数。而在后两种模式下,可以计算出来模型绘制的FPS。这些数据都会状态栏下显示出来。 对于在手动旋转模式和手动+自动旋转模式下,我们可以利用鼠标在屏幕上随意的拖动模型,以使物体产生旋转的效果。在三种模式下,都支持鼠标滚轮对物体进行放大和缩小操作,以产生真实感效果。

二、 Characteristic of the software:

1、本程序可以处理任意多面体(凸多面体或凹多面体) 可以处理任意多边形(除了凹多边形) 鲁棒性。可以读取从几个面片到几十万个面片的OBJ模型。且具有较高的速率。 实时性。可以对模型进行实时地旋转、放大缩小操作。 真实性。通过虚拟光照对模型进行假光照处理,使模型具有真实感。

2、在本程序的开发中,我尝试着对OpenGL、DirectX代码进行了封装,构造了一个引擎类 KnightEngineInterface类用于渲染和绘制。通过这样的话,程序员只要调用高层代码类就可以实现对OpenGL和DirectX的调用,程序员只要知道引擎类接口的定义,就可以将其用于渲染,而不需要知道引擎类调用的OpenGL或DirectX代码细节。这些代码将在光线跟踪实验中得到继续的完善。

3、为了方便程序的调试和为以后写大程序做准备。构造了个Trace 调试类。采用C++流或C流跟踪程序运行及其运行时动态数据.。特别是构造Trace类“<<”流重定向符功能非常强大,可以输出任意类型,方便了程序的调试工作。

三、 Graphic Examples

Geern Picture is created by software implementation.(Scan Line Zbuffer)
Purple Picture is created by hardware implementation.( OpenGL)

PC Configuration:
CPU: Intel® Core™ 2 Quad CPU
Q9400 @ 2.66GHz
Mem: 2GB

vertex Num : 4336 FaceNum: 8400

vertex Num : 34835 FaceNum: 69473

vertex Num : 10086 FaceNum: 199996

vertex Num : 766 FaceNum: 1536

原文地址:http://knightliao.blogspot.jp/2008/12/scanline-zbuffer-algorithm.html?zx=28904d873876c4a9

本文链接地址:ScanLine Zbuffer algorithm
1292 次点击