当顶点着色器完成它的工作然后是原始组装阶段.在原始组件阶段,正在进行剪切.然后在Fragment Shader的几个阶段之后来到Per-Fragment操作.第一个操作是像素所有权测试,如果我们已经基于视口剪切了图元,我无法理解为什么我们需要.
像素所有权的目的不是剪掉窗口/视口外的基元.根据管道定义,确实在顶点和片段着色器之间发生,在时间原始组件和光栅化的周围执行.
像素所有权测试用于消除基本在窗口矩形内但在屏幕上不可见的像素.出现这种情况的常见情况是,如果您的窗口被另一个窗口部分覆盖,或者您的窗口超出了显示器的边缘.
如果应用程序直接渲染到帧缓冲区,则像素所有权测试才真正发挥作用.我认为现代窗户系统不再常见了.您的应用程序通常会渲染到屏幕外缓冲区,然后有一个合成步骤,根据窗口的相对位置,堆叠顺序等组合窗口.您仍然可以直接渲染到帧缓冲区的全屏模式.
要记住的另一个方面是规范描述了OpenGL实现的行为方式.这并不意味着每个实现实际上都必须按照规范中描述的顺序执行各个步骤.只要它表现得像按顺序执行步骤一样,它仍然是合规的.例如,如果实现可以在片段着色器之前执行像素所有权测试,那么只要最终结果不会改变,它就完全可以自由地执行.事实上,在片段着色器之前的"每片段操作"部分中执行一些测试以提高效率是很常见的.
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |