【发布时间】:2015-07-28 23:23:23
【问题描述】:
我知道绘制圆的两种方法:包含 GL_LINES 的圆或包含平面三角形 (GL_TRIANGLES) 的圆。在第二种情况下,我们需要存储更多的顶点并在每一帧显示它。但是三角形更适合用于影响 GPU 的性能。
那么当你需要在屏幕上画很多圈时,用什么比较好呢?直线还是平面三角形?
【问题讨论】:
-
为什么不同时实现并测量 FPS?
-
根据圆的大小,每个圆仅绘制一个四边形(两个三角形)并使用片段着色器(使用纹理或程序)制作圆可能会更快。
-
在片段着色器中按程序进行几乎可以肯定是最快的方法。这样几何图形就可以像单个矩形一样简单,并且只处理视口可见的像素。
-
具有简单纹理的实例化四边形可能会更快;)不要忘记premature optimization
-
@JavaRunner 你画了一个覆盖整个圆的四边形。在片段着色器中,您计算像素到圆心的距离。如果它与圆的半径大致相同,请给它上色! (你可以使用smoothstep函数让它看起来也很漂亮和平滑)。