DX9三种缓冲区

 DX9中有三种缓冲区,分别是颜色缓冲区,深度缓冲区,模板缓冲区。

 

1 三种缓冲区简介

颜色缓冲区:设置后备缓冲区的颜色,即背景的颜色。

深度缓冲区:即所说的Z缓冲,每一个待绘制的三角形都有一个Z值(0-1),DX会比较当前位置的两个图元的Z值,决定绘制那个图元,即是否用当前图元的颜色代替已有位置图元的颜色。

模板缓冲区:是一个记录每个像素信息的附加的缓冲区,很象一个 z 缓冲区。 实际上,该缓冲区就驻在 z 缓冲区的某些位中。常见的模板/z 缓冲区格式为 15 位的 z 和 1 位的模板,或 24 位的 z 和 8 位的模板。在描绘多边形时,可以针对每个像素,对模板的内容进行简单的算术操作。例如,可以增加或减少模板缓冲区,或在模板值没能通过一项简单的比较测试时,拒绝像素。可以将帧缓冲区的一个区域标出,然后只对标出(或未标出)的区域进行描绘,上述操作对于此类效果十分有用。各种体积效果就是很好的例子,比如阴影量。

 

 

2 深度缓冲区的使用

 d3dpp.EnableAutoDepthStencil = true;//打开深度缓冲区
 d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//设置深度缓冲区的格式,具体参数设置可以查看文档

 

3 清空

g_pD3DDev->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 255),1.0f, 0);

D3DCLEAR_TARGET:清空颜色缓冲区,并设置默认颜色为D3DCOLOR_XRGB(0, 0, 255)

D3DCLEAR_ZBUFFER:清空Z缓冲,并设置初值为1,即为最远

当然,还可以用D3DCLEAR_STENCIL清空模板缓冲区

你可能感兴趣的:(DX9三种缓冲区)