SSBO中size参数的含义

时间:2016-10-29 21:49:15

标签: opengl size buffer shader

我在片段着色器中使用了两个SSBO。对于每个片段,我进行计算,如果满足某些条件,我将片段/像素的世界空间坐标(它们已经传递给片段着色器)写入一个SSBO,将片段颜色写入另一个SSBO。然后应用程序读取SSBO,并将那些保存在SSBO中的像素传递给下一个渲染。

中的尺寸参数
void glBufferData( GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage); 

目前可以有两个值:250020000

对于size = 2500的通行证,一切正常。只要size = 20000,大多数像素就会停止在SSBO中注册。

我的问题:size参数的实际含义是什么?它是每个片段实例中可以写入的大小(在这种情况下,每个片段每个SSBO只有一个vec4),或者它是每个渲染过程中所有实例的大小(在这种情况下)每个SSBO 2500或20000 vec4

1 个答案:

答案 0 :(得分:0)

我认为您的SSBO包含vec4。 它们的大小是它们的总大小是一帧的字节(如Reto Koradi所说),你每次用glBufferData重置它。 vec4是16个字节(每个float 4个字节,它们是32位)。所以2500的大小意味着2500/16 = 156(.25)vec4s。 20000字节是1250 vec4s