Witam, pytanie to jest bardzo krótkie, przeglądałem jednak strony w języku polskim i angielskim i nie znalazłem na nie odpowiedzi.
Wiem, że częste zmienianie tekstur i programów ( shaderów ) nie jest zbyt optymalne. Co jednak z wielokrotnym bindowaniem tej samej tekstury lub programu?
Pewnie zastanawiacie się jaki może być cel wielokrotnego ustawiania tego samego stanu.
Chodzi tu o wygodę, np. mam funkcje draw(), pobiera ona jako argument obiekt shader, robię tak po to żeby nie musieć pamiętać o jego wcześniejszym użyciu ( w ogóle nie lubię koncepcji maszyny stanów ). Jeśli wywołam taką funkcję np. 10 razy, i ona za każdym razem używa tego samego shadera ( wywołuje glUseProgram ), to czy coś tracę na wydajności?
Poniżej przykład w Rust:
pub fn draw_elements(&self, context: &gl, program: &Program, ebo: &ElementBufferObject) {
program.use_program(context);
self.bind(context);
ebo.bind(context);
context.draw_elements(gl::TRIANGLES, ebo.get_size() as i32, gl::UNSIGNED_INT, 0);
}
Nie mam pojęcia czy OpenGL jest inteligentny i nic zmieni, czy może za każdym razem będzie przełączał stan ponownie.
Z góry dziękuję za odpowiedź lub linka i serdecznie pozdrawiam :)