|
|
经常有人找这个,今天偶然发现一段,贴过来:
要使用NV的硬件shadow map支持,要使用NV的FOURCC纹理格式,GeForce6/7只能用"RAWZ",是每点分成4个成员的,需要组合解码,不太方便,解码也会有误差。GeForce8支持直接每点为整数的"INTZ",比较实用。
"No z-compare" z-buffers are exposed as a separate FOURCC format ('RAWZ'
on NV4x and 'INTZ' on G8x).
To create a RAWZ z-buffer, just do:
1. On GeForce 6/7 series use: (D3DFORMAT)MAKEFOURCC('R','A','W','Z')
2. On GeForce 8 series use: (D3DFORMAT)MAKEFOURCC('I','N','T','Z')
例:
m_pd3dDevice->CreateTexture(TEXDEPTH_WIDTH, TEXDEPTH_HEIGHT, 1,
D3DUSAGE_DEPTHSTENCIL, (D3DFORMAT)MAKEFOURCC('I','N','T','Z'),
D3DPOOL_DEFAULT, &m_pSMZTexture, NULL)
然后将这个纹理的第一层surface设置到depth buffer。
不过个人不喜欢用这个,因为不是通用的,宁愿用shader来做。 |
|