Same here.
It must be a bug concerning the shader storage buffers.
My shader storage buffer bindings stop working until I render something with a fragment shader before the actual dispathCompute. When I remove the draw-call or disable the fragmentshader (only vertex shader remains) it works.
This cost me 3 days 'till now to figure out. It's a shame ...
You can see my simplified code to get a picture:
InterfaceBlockBuffer sourceBuffer = new InterfaceBlockBuffer(resourcePool, "SourceBuffer", BUFFER_USAGE.DYNAMIC_DRAW); InterfaceBlockBuffer destBuffer= new InterfaceBlockBuffer(resourcePool, "DestBuffer", BUFFER_USAGE.DYNAMIC_DRAW); sourceBuffer.shaderStorageBlockBindingr(Bindings.BUF_SOURCE); destBuffer.shaderStorageBlockBinding(Bindings.BUF_DEST); sourceBuffer.bufferSubData(mySourceData); // ***** If this is commented out - it works ***** Joogl.setProgram(renderProgram); Joogl.setVertexArray(someVertexArray); Joogl.draw(DRAW_MODE.TRIANGLE_FAN, 0, 4); // *********************************************** Joogl.setProgram(copyProgram); // Copy from sourceBuffer to destBuffer Joogl.compute(MAX_FACES, 1, 1); destBuffer.getBufferData(myDestData); // print out myDestData ... on so on //myDestData all zero when render call is beeing made
I wrote some tests.When inserting the draw-call you cannot read OR write from a SSBO anymore.