Альтернативный способ рисования пользовательских элементов на экране в GTK3?

#c #gtk3

#c #gtk3

Вопрос:

Мне известен только один способ рисования пользовательских объектов на экране — GTKDrawArea с использованием Cairo

Это то, что я сделал: введите описание изображения здесь Есть ли другие способы архивирования чего-то подобного, которые менее ресурсоемки, чем полное перерисовывание экрана 60 раз в секунду? Если нет, существует ли возможность оптимизации (например, с использованием слоев, чтобы сетка не перерисовывала каждый кадр или не отображала всю схему сразу, а затем перемещала ее)?

Редактировать: я забыл упомянуть GtkGLArea, но его чрезвычайно сложно использовать в этом приложении, поэтому я счел это неуместным.

Ответ №1:

Это очень широкий вопрос, я попробую.

Вы можете использовать GtkGLArea, который позволяет вам выполнять рендеринг с использованием OpenGL, который может быть более низкоуровневым и, следовательно, быстрее, чем через Cairo. Это, конечно, заставляет вас выполнять намного больше работы.

Вы также можете создать изображение вне экрана и отобразить всю схему в соответствии с ним, а затем просто скопировать подходящий прямоугольник в соответствии с текущим местоположением прокрутки, что, вероятно, может быть быстрее, чем много рисовать.

Комментарии:

1. Извините. Я забыл упомянуть GtkGLArea. Я пытался использовать это раньше, но я сдался. Это абсолютный кошмар.

2. @Bumbieris112 Это выглядит довольно выполнимо, обычную 2D-графику не так уж сложно сделать с OpenGL, для этого есть множество руководств. Просто включите орфографическую проекцию и приступайте к ней, сначала, возможно, используя стиль начала / окончания старой школы (если это все еще доступно).

3. Ну, старый стиль недоступен. Теперь требуется компиляция шейдеров… Что является абсолютным кошмаром.