首页 > 解决方案 > 最小保证着色器存储块大小是多少?

问题描述

如果它存在,我似乎找不到它。我遇到了统一缓冲区的问题,其中 gl 规范给出的最小大小仅为 1024 个位置。我可以在着色器中为 SSBO 引用的位置数量是否有设定的最小值?例如,如果我希望能够访问 10,000mat4秒?

此外,在当前的现代硬件上,使用 SSBO 与使用顶点缓冲区之间是否存在显着的性能差异?

使用 SSBO、VBO 或几何着色器大致比较如何?(这在存储/扩展顶点的上下文中)。如果没有一般案例答案,我将对其进行分析。

标签: c++openglshadervertex-bufferssbo

解决方案


最大着色器存储块大小可以通过

GLint64 size;
glGetInteger64v(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, &size) 

由规范保证的着色器存储块大小的最小值是 2^27 (128MB)。

请参见OpenGL 4.6 API Core Profile Specification - State Tables分别为Shader Storage Buffer Object


推荐阅读