There's a bunch of setup needed here, so we'll go into a bit of detail with some code segments. First, we'll set up a buffer for our atomic counter:
GLuint counterBuffer; glGenBuffers(1, &counterBuffer); glBindBufferBase(GL_ATOMIC_COUNTER_BUFFER, 0, counterBuffer); glBufferData(GL_ATOMIC_COUNTER_BUFFER, sizeof(GLuint), NULL, GL_DYNAMIC_DRAW);
Next, we will create a buffer for our linked list storage:
GLuint llBuf; glGenBuffers(1, &llBuf); glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, llBuf); glBufferData(GL_SHADER_STORAGE_BUFFER, maxNodes * nodeSize, NULL, GL_DYNAMIC_DRAW);