使用Glade

时间:2018-11-09 14:31:53

标签: c opengl gtk gtk3 glade

我找不到非常简单的绘制线条和矩形的GtkGLArea绘制示例。我发现,所有示例都太复杂了,不是用C编写的,并且无法编译(由于过时的库/包)。我已经成功地编译了眩光(https://github.com/ebassi/glarea-example),但是,它太复杂了,无法理解其工作原理。任何人都可以完成下面的代码,以便程序绘制简单的线条或矩形吗?

我准备了一个非常简单的项目,其中包含带有GtkGLArea的窗口。

P.S。我知道开罗,但是对于我的目的来说太慢了。 20%的cpu使用率只能绘制简单的网格是不行的。

这个简单的项目包含3个文件:

compile.sh

#!/bin/bash
# Šis ir Testa programmas kompilēšanas un palaišanas skripts

echo "Program started to compile"
gcc `pkg-config --cflags gtk+-3.0 gio-2.0 epoxy` -rdynamic -o './Test.run' './Test.c' `pkg-config --libs gtk+-3.0 gio-2.0 epoxy`
echo ""

echo "Program should start now"
'./Test.run'
echo ""

echo "End of script"

GUI_design.glade

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkWindow" id="window_main">
    <property name="can_focus">False</property>
    <property name="default_width">1920</property>
    <property name="default_height">1080</property>
    <signal name="destroy" handler="on_window_main_destroy" swapped="no"/>
    <child type="titlebar">
      <placeholder/>
    </child>
    <child>
      <object class="GtkDrawingArea">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
    </child>
  </object>
</interface>

Test.c

#include <gtk/gtk.h>

#include <epoxy/gl.h> //This will be needed for OpenGL

int main(int argc, char *argv[])
{
    GtkBuilder      *builder; 
    GtkWidget       *window;

    gtk_init(&argc, &argv);

    builder = gtk_builder_new();
    gtk_builder_add_from_file (builder, "GUI_design.glade", NULL);

    window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));
    gtk_builder_connect_signals(builder, NULL);

    g_object_unref(builder);

    gtk_widget_show(window);                
    gtk_main();

    return 0;
}

// called when window is closed
void on_window_main_destroy()
{
    gtk_main_quit();
}

要编译和运行程序,请将所有3个文件放在一个文件夹中,然后运行compile.sh

0 个答案:

没有答案