【发布时间】:2017-12-24 07:55:05
【问题描述】:
我有一个我正在涉足的艺术应用程序,它使用 OpenGL 来加速图形渲染。我希望能够添加绘制任意分段曲线的能力 - 几乎与 SVG 'path' 元素可以定义的形状相同。
与其在 CPU 上将我的路径细分为多边形,我认为最好将缓冲区中的一组值传递给我的着色器,定义我的曲线片段,然后使用输入/输出测试来检查哪些像素实际上在里面。换句话说,我将遍历描述路径中每个段的潜在大型数据数组。
根据我多年前学习着色器编程时的记忆,GPU 通过评估两个分支然后丢弃未使用的分支来处理 if 语句。这实际上意味着即使我只使用了它的一小部分,它最终也会默默地运行在我的整个缓冲区中(即,我的缓冲区有能力处理 1024 个曲线段,但我正在绘制的简单矩形只使用前四个)。
如何编写代码来处理这些可变数据?现代 GPU 能很好地处理这样的条件代码吗?
【问题讨论】:
-
现代 GPU 通常可以正确处理
if。但是,移动 GPU 通常不会同时运行这两个分支。