【问题标题】:OpenGL Rasterization of object partially out of frustum对象的OpenGL光栅化部分脱离了截锥体
【发布时间】:2013-07-12 15:08:38
【问题描述】:

我想知道绘制一个尺寸部分在截锥体之外的三角形是否会比我计算三角形被截锥体束缚的位置并制作一个(可能是两个)新三角形来绘制那个而不是更大的三角形导致相同的像素发生变化。

所以问题是,是否有片段着色器针对您屏幕上甚至不存在的位置运行?或者光栅化阶段是否针对这个问题进行了优化。

【问题讨论】:

    标签: opengl rasterizing


    【解决方案1】:

    现代 GL 硬件真的,真的擅长根据视口裁剪三角形。

    片段着色器只会在视口裁剪后幸存的像素上运行。

    不要尝试在三角形级别进行平截头体剔除,而是在对象/图块级别进行。你的 CPU 和顶点着色器单元会感谢你的 :)

    【讨论】:

      【解决方案2】:

      这完全是司机的事。任何超出范围的三角形都会由您的驾驶员自动处理,理论上是将三角形细分为两个较小的三角形;我怀疑你能否比你的 GPU 更快地做到这一点。

      不过,有一些技术可以优化绘图范围之外的三角形而不进行细分;您可以指定一个不需要细分的区域(某种边界),如果该点恰好位于内部,则会发出特殊处理,但通常它会跳过不必要的片段计算。

      TL;DR:相信你的 GPU。

      【讨论】:

      • "两个较小的" 如果三角形很大并且在 ONCE 处与多个屏幕边缘/角相交,您可能需要多达 6 个三角形来重新对剪裁结果进行三角剖分。
      【解决方案3】:

      简答:
      不,片段着色器不会针对截锥体之外的像素运行。
      但是你真正应该担心的是顶点着色器。即使整个三角形都在截锥体之外,它也会运行,因为 GPU 无法预测(不是我知道的方法)三角形是否会出现在屏幕上。

      【讨论】:

      • 感谢提醒,我知道我绘制的所有三角形(部分)都在截锥体内。
      • 嗯...那你很幸运^^
      猜你喜欢
      • 2014-07-14
      • 1970-01-01
      • 2013-04-10
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      相关资源
      最近更新 更多