【GamePlay3D】开发——3D游戏开发基础知识

【本文是介绍Direct3D初始化的,感觉基本概念差不多就,转载了。】

我们首先了解一下做3D游戏的一些基本的概念。

 设备(Device)
在程序设计中常提到的另一个概念就是设备,什么是设备呢?设备是计算机的硬件,也就是我们用来进行图形绘制的物理设备。我们可以理解为计算机的显示卡。由于Direct3D已经封装了对于硬件直接访问的过程,因此,我们需要创建一个设备的接口,使用这个接口来进行我们的图形绘制。
 缓冲区(Buffer)
颜色缓冲区(Frame Buffer)也叫目标缓冲区(Target Buffer)是位于系统内存或显存里的一块内存块,对应于将要显示的一块二维显示区域。图形绘制过程中,Direct3D完成坐标转换、光照处理和纹理映射,将绘制结果的象素值存储在颜色缓冲区中,最后通过图形刷新,颜色缓冲区的内容被显示在屏幕上。
前台缓冲区和后台缓冲区都是颜色缓冲区的一种,前台缓冲区主要用于屏幕刷新,也是我们可见的部分。后台缓冲区主要用于图形的绘制,绘制完成后,两者进行页翻动的工作,把处理完的图形显示出来。
 页翻动(Page Flipping)
页翻动是什么呢?首先,让我们学习一下电影的原理。电影通过以每秒钟24幅的速度连续的闪动图像,每幅图像之间的差别很小,由于人眼的滞留作用,我们看到的画面就是连续的了。而Direct3D 也采取了这样的工作模式。我们把要显示的物体通通绘制到一个不可见的页上,我们称这个页为“后缓冲区”。绘制完后,快速的把它翻动到可见的“前缓冲区”上,并重复这个过程。当用户正在观看新绘制的可见页(前缓冲区)时,程序将下一幅要显示的东西绘制到“后缓冲区”上。快速而连续的重复次过程,用户就会看到像电影一样连续的图像了。不过一般情况下,我们每秒钟能绘制的页数要比电影多很多。
如果我们不是用页翻动技术,那用户看到的屏幕中的物体,将会一个个的被绘制出来,虽然速度可能很快,但效果会很差,那并不是我们想要的。
我们常常需要绘制连续的图形,所以,我们的游戏需要一个循环,称之为“Game Loop”。每次循环,我们都要清除“后缓冲区”,把该绘制的物体按照一定的逻辑都绘制到那上面,然
后把它翻动到“前缓冲区”上,然后进入下一次循环。这个循环得直到游戏退出了才能结束。有时我们可能需要好几个这样的“后缓冲区”(多缓冲)来组成一个“交换链”(Swap Chain),以求更好的效果。

正如上面所说在Direct3D中,一个设备对象至少包含两个显示缓存区:前台缓存区(Front Buffer)和后台缓存区(Back Buffer),前者可以看成Direct3D窗口的映射。当我们渲染图形时,实际上并不是直接在窗口上输出,而是在后备缓存区上绘图。渲染完毕后,交换两个缓存区,使原来的后备缓存区变成当前缓存区,从而实现窗口刷新,如下图所示。快速重复此过程,就会在屏幕上形成连续的动画。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值