#c #gtk3
#c #gtk3
Вопрос:
Мне известен только один способ рисования пользовательских объектов на экране — GTKDrawArea с использованием Cairo
Это то, что я сделал: Есть ли другие способы архивирования чего-то подобного, которые менее ресурсоемки, чем полное перерисовывание экрана 60 раз в секунду? Если нет, существует ли возможность оптимизации (например, с использованием слоев, чтобы сетка не перерисовывала каждый кадр или не отображала всю схему сразу, а затем перемещала ее)?
Редактировать: я забыл упомянуть GtkGLArea, но его чрезвычайно сложно использовать в этом приложении, поэтому я счел это неуместным.
Ответ №1:
Это очень широкий вопрос, я попробую.
Вы можете использовать GtkGLArea, который позволяет вам выполнять рендеринг с использованием OpenGL, который может быть более низкоуровневым и, следовательно, быстрее, чем через Cairo. Это, конечно, заставляет вас выполнять намного больше работы.
Вы также можете создать изображение вне экрана и отобразить всю схему в соответствии с ним, а затем просто скопировать подходящий прямоугольник в соответствии с текущим местоположением прокрутки, что, вероятно, может быть быстрее, чем много рисовать.
Комментарии:
1. Извините. Я забыл упомянуть GtkGLArea. Я пытался использовать это раньше, но я сдался. Это абсолютный кошмар.
2. @Bumbieris112 Это выглядит довольно выполнимо, обычную 2D-графику не так уж сложно сделать с OpenGL, для этого есть множество руководств. Просто включите орфографическую проекцию и приступайте к ней, сначала, возможно, используя стиль начала / окончания старой школы (если это все еще доступно).
3. Ну, старый стиль недоступен. Теперь требуется компиляция шейдеров… Что является абсолютным кошмаром.