Самый эффективный способ заключается не в том, чтобы выставлять такие низкоуровневые методы. Вместо этого вы должны создать scene graph, который представляет собой структуру данных, которая содержит представление всей сцены. Вы обновляете график сцены в своем методе «обновления», а затем визуализируете все это одним методом «рендеринга».
Другой, немного другой подход - это перестроить весь график сцены для каждого кадра. Это имеет то преимущество, что как только граф сцены составлен, он не изменяется. Таким образом, вы можете вызвать свой метод «render» в другом потоке, пока ваш метод «обновления» проходит и создает сцену для кадра next.
Многие из более продвинутых эффектов просто невозможны без полного графика сцены. Например, вы не можете выполнять теневое сопоставление (что требует, чтобы вы отображали сцену несколько раз с другого ракурса), вы не можете делать отсроченный рендеринг, он также делает все, что зависит от упорядоченного порядка рисования (например, альфа-смешивания) очень сложно.
Из ваших имен методов, похоже, вы работаете в 2D, поэтому, хотя отображение теней, вероятно, не очень велико в вашем списке функций, может быть отложено отсроченное рендеринг альфа-смешивания.
Что делает ваше приложение? Что нужно делать? Почему вы рисуете текст и линии отдельно? – jalf
Программа установлена в ряд состояний. Каждое состояние должно рисовать различные объекты, такие как Text, Boxes или что-то еще. Подобно Singleton :: get(). DrawText («Yea ...», 10, 10); –
Matt
И как часто шанс на сцену? Когда объекты добавляются или удаляются? За кадр или только при изменении состояния (которое, как я предполагаю, несколько редок) – jalf