光栅化器是否使用透视校正对每个不同的顶点值(或在顶点着色器“出”的较新版本的 glsl 值中)进行插值?这取决于硬件吗?
剪裁发生时,剪裁顶点处的值是如何计算的?
我尝试撤消透视校正并注意到被剪裁的多边形的奇怪行为,我想更好地了解幕后发生的事情。
光栅化器是否使用透视校正对每个不同的顶点值(或在顶点着色器“出”的较新版本的 glsl 值中)进行插值?这取决于硬件吗?
剪裁发生时,剪裁顶点处的值是如何计算的?
我尝试撤消透视校正并注意到被剪裁的多边形的奇怪行为,我想更好地了解幕后发生的事情。
Pre-GL 3.0,影响透视正确插值的唯一方法是提示。通常,glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)
将在所有变量上激活透视正确插值,而glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST)
通常将其关闭。请注意,这些只是驱动程序提示,仅此而已;司机不必以这种方式做出反应。
在 GLSL 1.30+ (OpenGL 3.0+) 中,您可以强制每个输出/输入以特定方式进行插值。插值限定符 smooth
意味着透视正确;如果您不指定限定符,这是默认设置。noperspective
意思是……显而易见的。
剪辑总是以这样一种方式完成,它就像没有被剪辑一样(或在硬件精度范围内足够接近)。因此,如果一个值是透视正确插值的,那么为被剪裁的顶点生成的值也必须使用透视正确插值。