Преимущества плюсов, конечно, напрашиваются)
Но все-таки иногда, в очень редких случаях, но все же, полиморфных вызовов хочется избежать (если ну очень критична производительность) - все-таки тупой свитч и статик-каст отработают +несколько+ быстрее... Возможно, тут именно одно из подобных исключений
Учитывая грядущую отрисовку тонн полигонов, вопрос о какой-то "заточке по скорости" здесь не стоит. А достоинства свитча - не столько его быстрота как компактность (не путать с "краткость"). По крайней мере все руление собрано в одном месте, нередко удается запастись общим кодом для неск веток. А расхристанные виртуалы как минимум трудно обозреть.
Я имел в виду - проверять поле типа и в зависимости от него брать нужные параметры.
Так это по существу сейчас и сделано, конечно можно вместо dynamic_cast оформить ID + switch, но это не принципиально
Так я насколько понимаю проблему - Igors как раз хочет избежать множества виртуальных Draw.
Просто образовался кусок кода с серией приведений (пусть относительно небольшой), вот думаю как этого можно избежать. В принципе я не против виртуальных Draw но пока из них ничего хорошего не выходит.