【发布时间】:2021-07-22 01:44:05
【问题描述】:
我正在开发一个极简的 2D 用户界面工具包,需要绘制很多矩形。我有一个渲染类,它使用循环绘制所有矩形,每次为矩形属性设置制服,例如填充、颜色、边框宽度、绘制颜色是否反转等,然后使用 GL_TRIANGLES 调用 glDrawArrays。我的片段着色器使用这些统一值。为了绘制一个反转颜色的矩形,我使用 glBlendFunc。
每个矩形都有一个 VAO/VBO。显然这是低效的,我想在我的所有矩形中使用一个 VAO,并使用单个绘图调用绘制矩形,而不是循环遍历它们并设置统一值并每次调用 glDrawArrays。
我想我可以将每对三角形放在一个 VBO 中,或者可能对所有矩形使用一个 VBO,但是我应该如何处理制服,我应该改用顶点属性,并尝试将这些传递给片段着色器,即使每个矩形的属性在顶点之间保持相同?
【问题讨论】:
标签: opengl-es fragment-shader vbo vao