交换链是什么?
交换链的由来?
在游戏绘制中,渲染的速度非常快,在显示器完成显示更新之前就能绘制出来(也就是画到中途就把画面给显示出来了),这样的话,屏幕就会显示未完成的画面,有会出现一闪一闪的情况(因为背景被清除了,而新的图案又没有画完整,就留下一大片空白直接显示出来。等到新的图案显示出来,等下又会清空成白色。造成一闪一闪的现象)。这时就需要引用交换链的技术,来解决这种问题。
如何解决屏幕一闪一闪的情况?交换链的原理到底是什么?
通常在游戏中会用两种颜色缓存,一种是主缓存(前向缓存),另一种辅助缓存(后向缓存)。我们把绘制过程画在辅助缓存,把绘制好的结果(这时就变成主缓存)显示在屏幕上。在游戏中切换缓存,使得一个用于写入,一个用于显示输出就可以消除这样的问题。所以主缓存是显示在屏幕上的,而辅助缓存被用于下一帧的更新。在计算机图形学中,这种乒乓技术就是双缓存(也叫页面翻转)。一个交换链能够有多个这样的缓存,D3D在这些缓存页之间进行翻转。
Direct3D中交换链有何含义?
Direct3D中的交换链是设备中渲染目标的集合。每个设备至少有一个交换链,而多个交换链能被多个设备所创建。一个渲染目标可以有一个已经渲染好显示在屏幕的颜色缓存,一个深度缓存(后面会说),一个模板缓存(后面会说)等。