есть такой код:
bool Model::bindBuffers(QOpenGLShaderProgram *p) {
GLuint index;
GLuint binding = 0;
const char * names[]= {
"matrices",
"vertices",
"rastbuf",
0
};
GLuint buffers[] = {
mMeshMatrixBuffer,
mMeshVertexBuffer,
mRasterBuffer
};
for(int j = 0; names[j]; ++j) {
index = gl->glGetProgramResourceIndex(
p->programId(),
GL_SHADER_STORAGE_BLOCK,
names[j]);
if (index == GL_INVALID_INDEX)
continue;
gl->glBindBufferBase(GL_SHADER_STORAGE_BUFFER,
binding, buffers[j]);
gl->glShaderStorageBlockBinding(p->programId(),
index, binding);
checkGLError(gl, "Model::bindBuffers");
++binding;
}
return true;
}
или я ошибаюсь, думая что шейдер ссылается на буфер а на самом деле он ссылается на индекс который ссылается на буфер?
линукс тут при том, что редактор воксельных моделек разрабатывается под линуксом.