Stencil Buffer是什么

什么是蒙版缓存

图像硬件中有个特殊内存,叫Stencil buffer。很多地方翻译做模板缓存,我觉的用蒙版缓存更贴切。因为这个缓存的和PS的图层蒙版很相似。渲染目标(Render Target,可以是屏幕,可以是离屏表面,可以是纹理)中每个像素在蒙版缓存中都有对应的蒙版值(Stencil Ref)。缓存中还有一个可以设置的蒙版函数(CompareFunction),例如 CompareFunction,例如Compare Function.Greater(大于)、CompareFunction.GreaterEqual(大于等于)、CompareFunction.Less(小于)和CompareFunction.LessEqual(小于等于)等等。

 

每个像素的蒙版值(StencilBufferValue)通过测试函数(CompareFunction)与参考值(StencilRef)进行比较,只有符合测试函数条件的像素才能被渲染出来。举一个例子,测试函数为CompareFunction.Less(小于),参考值(StencilRef)为0,那么只有蒙版值小于0的像素才能被渲染出来。蒙版缓冲区就是这样利用测试函数达到了控制像素渲染的目的。

 

蒙版缓存在3D中的用途有实现倒影,用Shadow volume实现阴影

 

相关链接

http://en.wikipedia.org/wiki/Shadow_volume

http://en.wikipedia.org/wiki/Stencil_buffer

http://wenku.baidu.com/view/3eb40b1714791711cc7917a2.html

http://www.owlei.com/DancingWind/

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=26


你可能感兴趣的:(测试,buffer)