void GrGLUniformHandler::getUniformLocations(GrGLuint programID, const GrGLCaps& caps) { if (!caps.bindUniformLocationSupport()) { int count = fUniforms.count(); for (int i = 0; i < count; ++i) { GrGLint location; GL_CALL_RET(location, GetUniformLocation(programID, fUniforms[i].fVariable.c_str())); fUniforms[i].fLocation = location; } for (int i = 0; i < fSamplers.count(); ++i) { GrGLint location; GL_CALL_RET(location, GetUniformLocation(programID, fSamplers[i].fVariable.c_str())); fSamplers[i].fLocation = location; } for (int i = 0; i < fTexelBuffers.count(); ++i) { GrGLint location; GL_CALL_RET(location, GetUniformLocation(programID, fTexelBuffers[i].fVariable.c_str())); fTexelBuffers[i].fLocation = location; } for (int i = 0; i < fImageStorages.count(); ++i) { GrGLint location; GL_CALL_RET(location, GetUniformLocation(programID, fImageStorages[i].fVariable.c_str())); fImageStorages[i].fLocation = location; } } }
void GrGLUniformHandler::bindUniformLocations(GrGLuint programID, const GrGLCaps& caps) { if (caps.bindUniformLocationSupport()) { int count = fUniforms.count(); for (int i = 0; i < count; ++i) { GL_CALL(BindUniformLocation(programID, i, fUniforms[i].fVariable.c_str())); fUniforms[i].fLocation = i; } } }
void GrGLUniformHandler::bindUniformLocations(GrGLuint programID, const GrGLCaps& caps) { if (caps.bindUniformLocationSupport()) { int uniformCnt = fUniforms.count(); for (int i = 0; i < uniformCnt; ++i) { GL_CALL(BindUniformLocation(programID, i, fUniforms[i].fVariable.c_str())); fUniforms[i].fLocation = i; } for (int i = 0; i < fSamplers.count(); ++i) { GrGLint location = i + uniformCnt; GL_CALL(BindUniformLocation(programID, location, fSamplers[i].fShaderVar.c_str())); fSamplers[i].fLocation = location; } } }
void GrGLUniformHandler::bindUniformLocations(GrGLuint programID, const GrGLCaps& caps) { if (caps.bindUniformLocationSupport()) { int currUniform = 0; for (int i = 0; i < fUniforms.count(); ++i, ++currUniform) { GL_CALL(BindUniformLocation(programID, currUniform, fUniforms[i].fVariable.c_str())); fUniforms[i].fLocation = currUniform; } for (int i = 0; i < fSamplers.count(); ++i, ++currUniform) { GL_CALL(BindUniformLocation(programID, currUniform, fSamplers[i].fVariable.c_str())); fSamplers[i].fLocation = currUniform; } for (int i = 0; i < fTexelBuffers.count(); ++i, ++currUniform) { GL_CALL(BindUniformLocation(programID, currUniform, fTexelBuffers[i].fVariable.c_str())); fTexelBuffers[i].fLocation = currUniform; } for (int i = 0; i < fImageStorages.count(); ++i, ++currUniform) { GL_CALL(BindUniformLocation(programID, currUniform, fImageStorages[i].fVariable.c_str())); fImageStorages[i].fLocation = currUniform; } } }