接口块大小可以大于 Opengl 中的底层 UBO 吗?

谢尔盖

让我们在着色器中声明一个大的接口块:

struct InstancingData
{
    // whatever
};

#define LARGE_SIZE 1048576
layout(std140, row_major, binding = 0) uniform InstanceBlock
{
    InstancingData data[LARGE_SIZE];
};

然后我想绑定一个小的 UBO,包含少于这个块的LARGE_SIZE条目InstancingData它可以是glBingBufferBase小阵列,也可以是glBindBufferRange大阵列中的小范围。

因此,我将data仅使用小于基础缓冲区大小允许的索引进行索引,使用适当的统一或gl_VertexID. 所以正式它不应该导致访问冲突。

这些操作是否会在任何 OpenGL 版本中触发错误或未定义的行为?

另一种方法:

我声明

InstancingData data[1];

然后我绑定了一个包含 42 个结构的缓冲区并将它们全部编入索引(实例模型的 6x7 方床),它在我的机器上运行良好。能保证在任何地方工作吗?

谢尔盖

ARB_uniform_buffer_object

如果任何活动的统一块没有足够大的缓冲区对象支持,着色器执行的结果是不确定的,并可能导致 GL 中断或终止。

这足以说明InstancingData data[LARGE_SIZE];使用小缓冲区进行备份是非法的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有统一块(UBO)的实例名称在OpenGL / GLSL中不起作用

来自分类Dev

workQueue的大小可以大于maximumPoolSize吗?

来自分类Dev

OpenSSL:EVP_DigestFinal_ex的输出大小可以大于摘要大小吗?

来自分类Dev

UBO 及其在 Vulkan 中的对齐方式

来自分类Dev

OpenGL:在OpenGL-ES外部可以接受三角带中的退化三角形吗?

来自分类Dev

我可以跳过在OpenGL中实现镶嵌细分着色器的工作吗?

来自分类Dev

窗口大小可以与设备大小不同吗?

来自分类Dev

我们可以在CUDA中重新初始化网格大小和块大小吗

来自分类Dev

指向非工会类的指针的大小可以不同吗?

来自分类Dev

jvm gc大小可以自动增加吗?

来自分类Dev

openGL绘制的对象的大小会影响性能吗?

来自分类Dev

剪裁平面不是在 kivy opengl 中工作吗?

来自分类Dev

Irrlicht 需要 OpenGL 吗?

来自分类Dev

我可以使用矢量(OpenGL)构建网格吗

来自分类Dev

我可以将opengl扩展指针设为全局吗?

来自分类Dev

我可以同时以多种语言使用 OpenGL 吗?

来自分类Dev

C-我可以将函数参数列表中的多维数组的大小设置为大于其实际大小吗?

来自分类Dev

我可以在单个渲染窗口中同时使用已弃用的OpenGL和现代OpenGL吗?

来自分类Dev

可以在Clojure中定义Java接口吗?

来自分类Dev

在if块中重复吗?

来自分类Dev

当C ++未指定结构布局时,为什么glBufferData可以缓冲UBO和SSBO的结构

来自分类Dev

当C ++未指定结构布局时,为什么glBufferData可以缓冲UBO和SSBO的结构

来自分类Dev

我可以通过清除其底层容器来清除priority_queue吗?

来自分类Dev

Python RegEx底层字符组-例如:可以使用[0-A]吗?

来自分类Dev

可以使用priority_queue底层容器的成员函数吗

来自分类Dev

从 R 中数据帧的不同大小的底层中绘制相同大小的样本

来自分类Dev

OpenGL与透明背景融合吗?

来自分类Dev

OpenGL是“状态机”吗?

来自分类Dev

不再使用QT OpenGL吗?

Related 相关文章

  1. 1

    具有统一块(UBO)的实例名称在OpenGL / GLSL中不起作用

  2. 2

    workQueue的大小可以大于maximumPoolSize吗?

  3. 3

    OpenSSL:EVP_DigestFinal_ex的输出大小可以大于摘要大小吗?

  4. 4

    UBO 及其在 Vulkan 中的对齐方式

  5. 5

    OpenGL:在OpenGL-ES外部可以接受三角带中的退化三角形吗?

  6. 6

    我可以跳过在OpenGL中实现镶嵌细分着色器的工作吗?

  7. 7

    窗口大小可以与设备大小不同吗?

  8. 8

    我们可以在CUDA中重新初始化网格大小和块大小吗

  9. 9

    指向非工会类的指针的大小可以不同吗?

  10. 10

    jvm gc大小可以自动增加吗?

  11. 11

    openGL绘制的对象的大小会影响性能吗?

  12. 12

    剪裁平面不是在 kivy opengl 中工作吗?

  13. 13

    Irrlicht 需要 OpenGL 吗?

  14. 14

    我可以使用矢量(OpenGL)构建网格吗

  15. 15

    我可以将opengl扩展指针设为全局吗?

  16. 16

    我可以同时以多种语言使用 OpenGL 吗?

  17. 17

    C-我可以将函数参数列表中的多维数组的大小设置为大于其实际大小吗?

  18. 18

    我可以在单个渲染窗口中同时使用已弃用的OpenGL和现代OpenGL吗?

  19. 19

    可以在Clojure中定义Java接口吗?

  20. 20

    在if块中重复吗?

  21. 21

    当C ++未指定结构布局时,为什么glBufferData可以缓冲UBO和SSBO的结构

  22. 22

    当C ++未指定结构布局时,为什么glBufferData可以缓冲UBO和SSBO的结构

  23. 23

    我可以通过清除其底层容器来清除priority_queue吗?

  24. 24

    Python RegEx底层字符组-例如:可以使用[0-A]吗?

  25. 25

    可以使用priority_queue底层容器的成员函数吗

  26. 26

    从 R 中数据帧的不同大小的底层中绘制相同大小的样本

  27. 27

    OpenGL与透明背景融合吗?

  28. 28

    OpenGL是“状态机”吗?

  29. 29

    不再使用QT OpenGL吗?

热门标签

归档