GLES2ImplementationEfl::ProgramData& GLES2ImplementationEfl::GetProgramData(
GLint program) {
- if (program == -1)
- program = current_program_;
auto it_program = program_map_.find(program);
DCHECK(it_program != program_map_.end());
return it_program->second;
GLuint GLES2ImplementationEfl::DoCreateProgram() {
GLuint program = evas_gl_api_->glCreateProgram();
- program_map_[program] = ProgramData();
- auto it_program = program_map_.find(program);
- DCHECK(it_program != program_map_.end());
- it_program->second.service_id_ = program;
+ ProgramData program_data;
+ program_data.service_id_ = program;
+ program_map_[program] = program_data;
return program;
}
void GLES2ImplementationEfl::DoUseProgram(GLuint program) {
evas_gl_api_->glUseProgram(program);
- evas_gl_api_->glGetIntegerv(GL_CURRENT_PROGRAM, ¤t_program_);
+ current_program_ = program;
}
void GLES2ImplementationEfl::DoDeleteProgram(GLuint program) {
}
GLint GLES2ImplementationEfl::GetBoundUniformLocation(GLint location) {
- const ProgramData& program_data = GetProgramData();
+ const ProgramData& program_data = GetProgramData(current_program_);
auto it_location = program_data.uniform_location_map_.find(location);
DCHECK(it_location != program_data.uniform_location_map_.end());
const std::string& name = it_location->second;
- GLint newloc = evas_gl_api_->glGetUniformLocation(program_data.service_id_,
- name.c_str());
- return newloc;
+ return evas_gl_api_->glGetUniformLocation(program_data.service_id_,
+ name.c_str());
}
void GLES2ImplementationEfl::DoBindUniformLocationCHROMIUM(GLuint program,