1
雖然與計算着色器我看到剛剛創建的GL_SHADER_STORAGE_BUFFERS最例子,像正常的緩衝帶打:瞭解GL_SHADER_STORAGE_BLOCK結合
glGenBuffers, glBindBuffer, glBufferData
,然後將它們像這樣使用:
glUseProgram(computeShader);
glBindBufferRange(GL_SHADER_STORAGE_BUFFER, **3**, bufferA, 0, bufferSize);
glBindBufferRange(GL_SHADER_STORAGE_BUFFER, **4**, bufferB, 0, bufferSize);
glDispatchCompute(computeShader);
在計算着色器中,緩衝區聲明如下:
layout (**binding = 3**) buffer
buffer1
{
vec4 data1[];
};
layout (**binding = 4**) buffer
buffer2
{
vec4 data2[];
};
然後我得到了一些建議,在初始化之後我應該做這樣的事情:
GLuint index = glGetProgramResourceIndex(computeShader, GL_SHADER_STORAGE_BLOCK, "buffer1");
glShaderStorageBlockBinding(shader, index, index);
爲什麼是這個必要嗎?
自glBindBufferRange需要佈局指定的索引(binding = x)以來它有什麼用途?
那些隨機**在代碼中做的是什麼? – Vallentin
我只是想大膽他們... – Alex