void JumbotronScreen::Draw( Shader & shader, const mat4 & projection, mat4 modelview, const ivec2 & size, const Light & light, GLint with_texture, GLint with_attenuation, const float time ) { if (this->GLReturnedError("Pile::Draw - on entry")) return; mat4 mvp = projection * modelview; shader.Use(); shader.CommonSetup( time, value_ptr(size), value_ptr(projection), value_ptr(modelview), value_ptr(mvp), value_ptr(mat3(transpose(inverse(modelview)))), value_ptr(this->Ka_), value_ptr(this->Kd_), value_ptr(this->Ks_), this->shininess_, light.getLaValuePtr(), light.getLdValuePtr(), light.getLsValuePtr(), light.getLightPositionValuePtr(), with_texture, with_attenuation, this->textid_ ); glBindVertexArray(this->vertex_array_handle); #ifdef DRAW_POINTS glDrawArrays(GL_POINTS, 0, this->vertex_indices.size()); #else glDrawElements(GL_TRIANGLES , this->vertex_indices.size(), GL_UNSIGNED_INT , &this->vertex_indices[0]); #endif glUseProgram(0); glBindVertexArray(0); if (this->GLReturnedError("Pile::Draw - on exit")) return; }