计算机3D介绍

1:计算机3D介绍:

1.1   图像数字化:

最早,我们的图像用过色盘来表示图像的颜色,既256种不同的颜色来表示,画面内存只需要1Byte的索引数值,但是色彩很单调,现在在已经淘汰了。现在我们通过RGB8bit来表示颜色,既,3元色,可以混合出我们的所有颜色。在1024X768的分辩率下,其占存储量:1024X768X3Bytes = 2.25MB,而在硬件上都是4的倍数的地址才能运行,所以实际占用了1024X768X4Bytes = 3MB,那我们不就浪费了空间了吗,其实么有,我们在RGB上又加上了一个Alpha(透明色)来表示颜色的透明度。

1.2   3D画面的产生:

         其实3D和我们的照相一样,把3D的世界拍成2D的照片。在3D中,所有的物体都是基本多边形组合成,3角形最常用。我们把世界上的物体的表面通过多边形拼凑起来,再通过在面上贴图,来模拟现实的物体。这时,我们会发现其实我们的3D物体都是空心的,对。但在游戏中,我们会通过碰撞检测来防止玩家进入到物体内部去。

         在现实中,前面的物体会挡住后面的物体,让我们只能看到前面的物体,但是在3D程序中,没有什么时丽说当然的,现在的显卡,我们都是通过一个z_buffer的来保存当前像素离我们Camera的距离,当我们的一个多边形点转换成像素点时,显卡会计算当前点到Camera的距离,然后和前面已保存的像素点的Z_buffer进行比较,如果更近,那么更新像素的色彩,并更新Z-buffer,如果更远,那么不更新当前像素点。可以看到这样离我们远的物体就被近的物体挡住了,不会显示出来。但是问题也跟着出来,想想,如果是透明的物体,那么这样会出现什么样的问题。那么透明的物体我们又该怎么处理呢?(这里,我们就不能使用Z-buffer了,只有把透明的物体排序,先画远的,再画近的)。我们通常用16bits/24bits来保存z-buffer,但是硬件4Bytes的规则,我们还是用了32bits来保存了,是不是又浪费了呢,其实没有,在24bitsz-buffer下,我们又加上了8bitsstencil-buffer,来占用空间,后面会介绍s-buffer.

1.3   动画:

最常见的动画是帧动画,当帧率超过30fps的时候人的眼睛就看不出来一页页的变化了,而是感觉成一个连贯的动画了。在我们d3d中,我们是通过double buffer来实现交换页的操作的,一块用来存储已经画的buffer,一块用来存储正在画的buffer,而屏幕上显示的永远是画好的buffer,这样不会让玩家看到画画的过程。其实在我们d3d中,调用device->present的时候,就是在交换2buffer,让将刚画好的现实出来,而另一又用来准备新的画面。在win下,是通过copy buffer来实现的,在full下是通过swap buffer来实现的,这样省略的拷贝动作。

1.4   GPU:

图形处理芯片:我们游戏爱好者的上帝J,其强力的浮点运算能力和并行处理能力让我们的3D世界变得更加强大。我们常说的GPU编程是,vertex shader/pix shader/Geometry shader.使我们的多边形的操作和色彩的设置都放到的GPU中,例如矩阵,4vector等运算放到了Gpu中,通过并行能力,远远超过了cpu的运算能力,现在吵的火热的Cuda就是一个很好的例子。以后的发展,Gpu将不只是图形的处理专用,而是平行算法的核心应用领域。

好了,今天就这些了,希望能坚持下去,虽然很多是书上的,但是还是加了些自己的理解:)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值