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