这里很好地解释了什么是片段:
https://gamedev.stackexchange.com/questions/8977/what-is-a-fragment/8981#8981
但是here (不仅在这里)我读到“我想强调一个事实,一个像素不一定是一个片段,多个片段可以组合成一个像素......”。但是我不太清楚什么是碎片,为什么它们不一定与像素一一对应?
编辑:当多个片段形成一个像素时,只有在投影后它们重叠的情况下,或者是因为像素大于片段,因此您需要将多个相同的片段并排放在一起颜色形成一个像素?
最佳答案
片段有一个位置,可以通过其内置的 gl_FragCoord
变量查询,其中 x
和 y
组件直接对应于像素在你的屏幕上。所以你可以说一个片段确实对应于一个像素。
但是,片段会输出一种颜色并将该颜色存储在其坐标处的颜色缓冲区中。这并不意味着这种颜色是显示给观众的实际像素颜色。
因为为每个对象运行一个片段着色器,所以可能会在您的第一个对象之后绘制其他对象,该对象也在同一屏幕坐标处输出片段。在考虑深度测试、模板测试和混合时,颜色缓冲区中生成的颜色值可能会被新颜色覆盖和/或合并。
可以这样想:
Object 1 gets drawn and draws the color purple at screen coordinate (200, 300);
Object 2 gets drawn and draws the color red at same coordinate, overwriting it.
Object 3 (is blue) has transparency of 50% at same coordinate, and merges colors.
Final fragment color output is then combination of red and blue (50%).
最终生成的像素可能是来自单个片段着色器运行的颜色、被许多其他片段着色器运行覆盖的颜色,或者通过混合的颜色组合。
关于opengl - 为什么片段不一定与像素一一对应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25463536/