深度测试

我们在绘制3D场景的时候,总要考虑到物体之间会相互阻挡,那究竟画哪个,我们就要用到深度测试。

 

深度缓冲区是D3D用来存储绘制到屏幕上的每个像素点的深度信息的一块内存缓冲区。D3D通过比较当前像素点的深度与对应的深度缓冲区的深度值来决定是否绘制当前像素。也就是说 深度缓冲区其实就是一个与屏幕大小相等的二位区域,区域中每一点都有对应的深度值,当我们要画一个像素时,我们先通过深度测试(一般是深度小的显示,也可以设置大的显示,通过设置深度测试函数)。如果当前像素比深度值小,这个时候我们要更新深度缓冲区与该像素对应的深度值,然后绘制该像素。

差不多就是这个过程,接下来就看一下步骤。

步骤:

1.创建深度缓冲区

在创建D3D渲染设备时 有一个参数D3DPRESENT_PARAMETERS d3dpp;

d3dpp.EnableAutoDepthStencil = TRUE; //使用深度测试

d3dpp.AutoDepthStencilFormat = D3DFMT_D16;//深度缓冲区格式 16位2进制

2.激活深度测试

g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, TRUE);

3.设置深度测试函数(刚才说了 一般设置成小于)

g_pd3dDevice->SetRenderState( D3DRS_ZFUNC, D3DCMP_LESS );

4.更新深度缓冲区 ( 刚测试的像素比深度缓冲区对应的深度值小的画,更新深度值)

g_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, TRUE);

你可能感兴趣的:(测试,less,存储,Parameters)