К примеру, какие функции отвечяют за смеуну стейтов?
|
ну наприер:
somenetity->BindShader(someshader);
сменили шейдер - сменился стейт.
также его меняет переключение бленда с непрозрачного на прозрачный и обратно.
смена текстуры.
смена source (грубо говоря - геометрии)
так вот - тупо привязываться нельзя. ибо:пользователь может КАЖДЫЙ кадр менять какой то стейт (например видеотекстура, или там шейдер от лода зависит). И что теперь? каждый кадр сортировать - ну уж нет. сортировка куда дороже дельты меду рендерем неотсортированого и отсортированого списка.
надо привязываться как то с умом. в принципе можно делать сортировку, скажем не чаще чем раз в 10 секунд.