我正在尝试渲染圆角三角形以提高性能。为了说明我的意思,请看下图:
我在 CPU 中尝试过,现在有没有办法以某种方式将此算法移动到 GPU 上?我可以更改调用片段着色器的方法代码吗?
顺便说一句,如果我能做到,那么我需要重新制作成哪种编程语言?
我正在使用只有 20GB-30GB 内存带宽的 OpenGL 2.1 GPU。
我正在尝试渲染圆角三角形以提高性能。为了说明我的意思,请看下图:
我在 CPU 中尝试过,现在有没有办法以某种方式将此算法移动到 GPU 上?我可以更改调用片段着色器的方法代码吗?
顺便说一句,如果我能做到,那么我需要重新制作成哪种编程语言?
我正在使用只有 20GB-30GB 内存带宽的 OpenGL 2.1 GPU。
我不确定你到底在做什么,但这似乎有点可疑。尝试在着色器中进行一些自定义计算以渲染圆形或椭圆形,实际上最终可能会损害性能。
现代 GPU 硬件每秒可以推动数十亿个三角形。你可能在这里分裂头发。
无论如何,如果您想“伪造”几何图形,您可能会感兴趣:https ://alfonse.bitbucket.io/oldtut/Illumination/Tutorial%2013.html
阅读 Charles Loop 和 Jim Blinn 的论文Resolution Independent Curve Rendering using Programmable Graphics Hardware。
简短版本:假设您对曲线进行了有效的内部/外部测试,将封闭的外壳形状渲染为三角形,使用片段着色器丢弃曲线外部的像素。
其次,Aeluned 担心将算法转移到 GPU 不会自动使其更快。
因此,在您的情况下实施此操作以获得更好的性能并不是一个好主意。
我能想到的唯一一件事就是简化手动生成形状。
在这种情况下,只需编写一个函数 glRoundedTriangle(....)
它的样子是未知的,因为您没有指定圆角三角形几何/形状和/或输入参数(例如 3 个点 + 3 个有符号曲线半径?)
为了提高 OpenGL 的性能,请使用 VBO/VAO