最小保证着色器存储块大小是多少?
Posted
技术标签:
【中文标题】最小保证着色器存储块大小是多少?【英文标题】:What is the minimum guaranteed Shader Storage block size? 【发布时间】:2020-06-12 08:29:38 【问题描述】:如果它存在,我似乎找不到它。
我遇到了统一缓冲区的问题,其中 gl 规范给出的最小大小仅为 1024 个位置。我可以在 SSBO 的着色器中引用的位置数量是否有设定的最小值?例如,如果我希望能够访问 10,000 个mat4
s?
此外,在当前的现代硬件上,使用 SSBO 与使用顶点缓冲区之间是否存在显着的性能差异?
使用 SSBO、VBO 或几何着色器大致比较如何? (这在存储/扩展顶点的上下文中)。如果没有一般的案例答案,我会对其进行分析。
【问题讨论】:
您是否将“SSBO 大小”与“统一位置数”混为一谈?我认为它们没有直接关系。 @BDL 我指的是我可以从着色器访问的信息量。 【参考方案1】:最大着色器存储块大小可以通过
GLint64 size;
glGetInteger64v(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, &size)
由规范保证的着色器存储块大小的最小值为 2^27 (128MB)。
分别见OpenGL 4.6 API Core Profile Specification - State TablesShader Storage Buffer Object
【讨论】:
以上是关于最小保证着色器存储块大小是多少?的主要内容,如果未能解决你的问题,请参考以下文章