Code: Select all
struct sDrawCallData
{
vec4 something;
vec4 somethingElse;
};
buffer drawCalls
{
sDrawCallData drawCallsPayload[];
};
So the SSBO limit is 0, i.e. they are not available whatsoever.error: Too many vertex shader storage blocks (1/0)
Is there some workarounds to make buffers work? Or should I replace that data structure with a 2D float4 texture and use texelFetch() to read my 2 values? Or should I replace, or supplement, vertex shader with a compute shader?
P.S. The data in that buffer is dynamically updated by CPU every frame. That’s why I would prefer the buffer, especially given the GPU reports support of this extension: https://www.khronos.org/registry/OpenGL ... torage.txt
Update: the API reports GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0 and GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 16. If true, it means vertex shaders can’t read from buffers, but they can read from textures, up to 16 of them.