在 OpenGL 中渲染对象的哪种方式更有效

Which way of rendering objects in OpenGL is more efficient?

本文关键字:方式更 有效 对象 OpenGL      更新时间:2023-10-16

使用OpenGL渲染两个形状相同但坐标不同的图形元素的哪种方式更有效(例如,一个对象是颠倒的)?

    使用
  1. CPU 生成两组不同的点,然后在 while 循环中仅使用一个着色器
  2. 仅使用 CPU 生成一组点,创建两个不同的着色器,然后在 while 循环中在它们之间切换?

附加问题:是否可以在着色器中创建一组点?(此积分将使用sin()cos()函数计算)

如果在第一种情况下,您在 OpenGL 函数调用之间切换缓冲区,那么两种解决方案可能同样糟糕。如果您在单个缓冲区中保存两个形状并在单个调用中绘制所有内容,那么它将比解决方案 2 更快,但它需要两倍的内存,这也很糟糕。(你应该有一个用于形状的缓冲区和另一个用于转换的缓冲区)
通常,您应该使用尽可能少的 OpenGL 调用。

关于第二个问题:是的。例如,您可以使用硬编码数组或从gl_VertexID派生点坐标。