zoukankan      html  css  js  c++  java
  • 渲染管线小结

    VS —>Assembly(三角形组装 )—>Clip—>屏幕映射—>Rasteration(光栅化,三角形像素扫描)—>PS—>

    AlphaTest—>ZBuffer(ZTest,ZWrite)—>StencilTest—>blend

    _____________________________________________________________________________________________________
    1,zbuffer决定一个像素是否会写到frontbuffer,同时,也会写入或不写Z值到zbuffer中,如果设定了 zwrite off,

    表示仅进行ztest,而不把z写入zbuffer,但像素还是会绘制的

    2,模板测试简单来说是:先在某些像素区域写入模板值X,然后在此区域绘制其它物体的像素时通过 if(模板参考值><=x)来进行像素处理(如丢弃)

    如实现镜子效果:先绘制代表镜子的四边形,同时无条件写入模板值2;然后绘制镜子前的物体,使它显示到镜子中,绘制时若像素的模板值为2则绘制,否则丢弃。

    这样只有镜子所处像素范围的物体才会被绘制出来,超出的像素不显示。

    3,alpha测试,注意先绘制不透明物体,再绘制半透明物体,且按照距相机从远向近绘制

    若是将不透明物体绘制在近处,而将半透明物体绘制在远处,就实现不了半透明效果了,只能看到不透明物体挡住了你想要半透明的物体。

    原因:blend在流水线中处在 zbuffer的后面,不透明物体绘制在近处,半透明物体在zbuffer测试时重叠像素被丢弃,进入不了blend阶段了

    4,framebuffer就是colorbuffer,zbuffer,stencilbuffer,depthbuffer的合体,GL绘制到屏幕时使用的是colorbuffer。

    推测:另有一个backbuffer在后台绘制,绘制完成后交给framebuffer。framebuffer就是frontbuffer了?这里不确定

     _____________________________________________________________________________________________________

  • 相关阅读:
    lightoj1027_数学求期望
    lightoj1232_完全背包
    2013 ACM/ICPC Asia Regional Chengdu Online
    数位DP专题
    状态压缩DP专题
    树形DP专题
    hdu 1198 Farm Irrigation
    hdu 4739 Zhuge Liang's Mines 2013 ACM/ICPC Asia Regional Hangzhou Online
    hdu 4745 Two Rabbits 2013 ACM/ICPC Asia Regional Hangzhou Online
    动态规划专题uva
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9463855.html
Copyright © 2011-2022 走看看