我找不到非常简单的绘制线条和矩形的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