网站首页   公司介绍   行业新闻   技术文章   应用示例   产品中心   在线留言   联系我们
3D 绘图原理 (3D Graphics Pipeline ) 之三
时间:2015-5-5 20:22:10,点击:0

一个简单的例子:要将一块圆形画在一块木板上,但是我希望圆形超出木板的部份不要被画出来。那么使用Stencil Test的做法就是:

1.     Render出木板,并在Render木板的同时将木板位置的的Stencil buffer设为 1
.

2.     Render圆形在木板上,但是若是Stencil buffer不等于1,则将该Pixel Discard。若是Stencil buffer等于1,则继续绘制并将Stencil buffer设回0


像这样的形式,Stencil Test被运用在很多绘图技巧上。最重要的运用例如阴影(Shadow)的绘制。使用Stencil Test可以将阴影均匀且正确的绘制到被阴影遮盖的表面上。

Depth buffer
的宽度通常是16bits~32bitsStencil buffer1~8bitsDepth buffer的宽度决定了深度测试的精确度。Stencil buffer的宽度决定其运用的自由度,越长的Stencil buffer可以表示越多种「状态」,例如上面例子的0 1分别代表已经绘制过和尚未绘制过的状态。

此外,从前的Depth buffer技术只有Z-bufferZ-buffer有个问题是它对远方的物体精确度较低,因此可能会出现前后关系判断错误的情形。造成这个原因的主因,是Z值在Screen coordinate中做双线性内插(前一篇提过的)然而在Eye coordinateScreen coordinate的变换是个非线性的变换。这就造成在Eye coordinate上的Z值是非线性的变化。因此在近处与远处的精确度就不一样了。因此我们引入了w-buffer的概念,W值其实是Z的倒数,它在Eye coordinate上是线性的变化。因此我们在Depth-Test中加入了w-buffer之后,就能够处理z-buffer在远处精确度不足的问题。

3.6.4Blending
混色,将目前的Pixel Colorframebuffer中已经绘制好的图形做不同比例的混色。这个比例可能由透明度决定,也可能由其他参数计算出来。实际上在这个Stage可能进行的Operation还有不少(例如Dithering),这里只是举出最常见的几种。

最后,将算出来的颜色结果写进framebuffer中,就完成了整个Rendering pipeline过程了。


打印】【关闭
新闻分类  
硬件技术
软件技术
应用技术
产品中心
nVIDIA显示卡
AMD显示卡
外置设备
信号线缆
Matrox迈创显示卡
应用示例
3*1 球面融合
3*3拼接+ 1路回显画面
416 台LCD显示器的庞大电视墙

琛之睿电子 版权所有

本站部分资料来源于网络,仅作为展示之用,版权归原作者所有.如果侵犯了您的权益,请来信告知,我们会尽快删除.

粤ICP备15029931号

HB-VX4,分屏器,扩屏宝,显示宝,识别器,专业卡 ,多屏卡,Quadro,Firepro,k600,v4800,v4900,w9100,w600,k2000,丽台,蓝宝石,MST,主动线