Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Закрыт 1 год назад.
У меня есть проект, в котором имеются классы: View
, Scene
, Item
и Renderer
. Тобишь у меня есть некая сцена, которую я отображаю во вью вместе с доступными в заданном пространстве итемами. Для прорисовки используется opengles
, вызовы которого скрыты за методами класса Renderer
, который управляет opengl
программами, шейдерами а также отрисовывает текстуры.
Изначально все было построено так: View
выясняет у Scene
какие Item
-s видны и передает ему уже сконфигурированный объект класса Renderer
в метод render
. В этом методе Item
просто дергает нужный метод из Renderer
(вроде renderRing
). После всего этого буферы свапаются и мы видим изображение. Однако это не оптимально из-за того, что в на gpu
каждый раз передаются данные, которые уже были переданы до этого (к тому каждый раз происходят вычисления, вроде триангуляции, что тоже плохо). Чтобы избежать этого я создал класс Cache
который использует VAO для обращения к уже переданным на GPU данным. Теперь методы Renderer
возвращают Cache
который мы можем сохранить и использовать для рендеринга в дальнейшем. Но это оказалось плохой идеей: дело в том, что если мы имеем несколько View
то Cache
все равно будет создан только один раз (так как сцена все равно одна), а из-за этого во втором View
картинка не может быть прорисована (так как там другой Renderer
с другой программой.
Как правильно организовать класс Renderer
исходя из вышеизложенного? Следует также учесть, что классы View
и Item
изначально абстрактные и количество наследников нам изначально не может быть известно (соответсвенно я не могу для Renderer
сдесь применить визитера). Я полагаю, что необходимо хранить Cache
не в итемах, а именно в Renderer
(что позволит использовать несколько View
), но не могу понять как это правильно организовать.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Недавно начал изучать HTML и уже 3 сайта написал (списывал проекты с ютуба и разбирал код)Везде видел <div> <div> вместо <header> <footer> и тд
Возможно, кто-то сталкивался с подобными блоками?