首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从三角形创建圆还是使用片段着色器绘制它们更快?

从三角形创建圆还是使用片段着色器绘制它们更快?
EN

Stack Overflow用户
提问于 2018-07-01 22:30:54
回答 2查看 1K关注 0票数 1

我使用语言Rust和Glium库。我想在屏幕上显示大量的圆圈,但我不能决定如何去做。

有一个选项可以从三角形创建圆,或者我可以用碎片着色器绘制它们,也就是说,取每个圆的中心到屏幕上每个点的距离,如果它小于半径,则将其绘制为所需的颜色。为了清楚起见,这里有一个我如何画一个圆的例子:

代码语言:javascript
复制
vec2 point = vec2(200.0f, 200.0f);
float dist = distance(point, gl_FragCoord.xy);

if (dist < 200)
    gl_FragColor = vec4(0.0f, 1.0f, 0.0f, 1.0f);

哪种方法工作得更快?有没有做得更好的选择?每个圆的大小和颜色都会在运行时发生变化。

EN

回答 2

Stack Overflow用户

发布于 2018-07-03 14:37:24

更快?

CPU速度更快?

完全更快?

没有人知道你的环境。图形芯片可以非常强大。当你可以合理地利用它的能力时,你的程序就有可能变得“更快”。

当你渲染三角形桶时,你的CPU正在做准备几何参数等工作,当你每次绘制调用只渲染两个三角形时,工作是在GPU端完成的。但是这种方法很难实现,因为你需要在片段着色器中传输原始的圆数据(我的意思是半径和中心坐标)。对于很少的圆圈来说,这是微不足道的,但对很多人来说并不是。考虑一下吧。

如果使用距离场纹理,则必须在CPU上或使用不同的绘制调用创建它。

票数 2
EN

Stack Overflow用户

发布于 2018-07-01 23:32:08

好吧,使用GPU(着色器)绘制应该比制作一大堆三角形要快得多(如果我自己确实正确的话)。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51124204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档