opengl 了解GLSL中的UBO限制

vhipe2zx  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(231)

我将实现一些使用统一缓冲对象的功能,在此之前我将尝试了解UBO的局限性。例如,让我们使用这些GL_MAX_*值和这个简单的片段着色器:
第一个
问题:
1.每个统一变量是否都使用一个GL_MAX_VERTEX_UNIFORM_BLOCKS,或者是否有一个默认的统一块来存储这些变量(我猜是后者)?

  1. GL_MAX_UNIFORM_BLOCK_SIZE是所有定义的统一块的限制,还是每个定义的UBO都有此参数的最大大小,在本例中,允许传递到着色器程序的统一数据的最大数量为229,376字节(分布在多个ubo上)?
  • 如果我在问题1中的假设是正确的,其中单独定义的统一变量包含在默认的统一缓冲区对象中:
  • A.)这个默认缓冲区是否也遵守16384字节的限制,这意味着所有单独定义的统一变量的组合大小不得超过16384字节?
  • B.)这个默认的缓冲区是否消耗了一个统一的块,留下max可用(在定义任何其他ubo之前)13?
  • 单独定义的统一变量是否计入GL_MAX_UNIFORM_BUFFER_BINDINGS参数,从而在本例中留下81个可用绑定位置?
wixjitnu

wixjitnu1#

未在区组中声明的制服不计入 * 任何 * 统一区组限制。统一区组限制也不适用于它们;非块状制服具有它们自己的、单独的限制。

相关问题