!!! GTK+ OpenGL Extension * GDKのドローイングエリアに対してOpenGLの描画関数を適用できるように拡張されたライブラリ. ** [本家|https://projects.gnome.org/gtkglext/] !!! 連携の仕組み * 基本的には, ** GDKのドローイングエリアに対してOpenGLが利用できるような設定を加え,(GLウィジェットの生成) ** GLウィジェットから,OpenGL専用のコンテキストとドローイングエリアを抽出し, ** その専用コンテキストの設定や専用ドローイングへの描画を,OpenGLの関数で行う, * という流れです. !! 演習用端末でのコンパイル,リンク時の注意 GTK+ OpenGL Extension(以下,gtkglext)を使ったプログラムには 8< #include #include >8 が必要です.また,コンパイル時には 8< $ gcc teapot-sample.c `pkg-config --cflags --libs gtk+-2.0 gtkglext-1.0` >8 のように,'''gtkglext-1.0 の指定も必要'''です. !! 初期化 * [gtk_gl_init()|https://developer.gnome.org/gtkglext/stable/gtkglext-gtkglinit.html] gtkglextを使う場合に必ず必要 8< void gtk_gl_init (int *argc, char ***argv); >8 !! GDKのドローイングエリアでOpenGLを利用できるように GLコンパチブルなウィジェット(以下,GLウィジェット)の生成 * [gtk_widget_set_gl_capability()|https://developer.gnome.org/gtkglext/stable/gtkglext-gtkglwidget.html#gtk-widget-set-gl-capability] ** 関連[GdkGLConfig|https://developer.gnome.org/gtkglext/stable/gtkglext-gdkglconfig.html#GdkGLConfig], [GdkGLContext|https://developer.gnome.org/gtkglext/stable/gtkglext-gdkglcontext.html#GdkGLContext-struct] 8< gboolean gtk_widget_set_gl_capability(GtkWidget *widget, GdkGLConfig *glconfig, GdkGLContext *share_list, gboolean direct, int render_type); >8 * 使い方の例 8< GtkWidget *drawing_area = gtk_drawing_area_new(); ... GdkGLConfig *gl_config = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGBA | GDK_GL_MODE_DEPTH | GDK_GL_MODE_DOUBLE); gtk_widget_set_gl_capability(drawing_area, gl_config, NULL, TRUE, GDK_GL_RGBA_TYPE)) >8 !! GLウィジェットへの(OpenGLによる)描画 * 使い方の例 8< GdkGLContext *gl_context = gtk_widget_get_gl_context(drawing_area); GdkGLDrawable *gl_drawable = gtk_widget_get_gl_drawable(drawing_area); >8 ((color red '''まだ書きかけです!''')) !! OpenGLを使った描画のサンプル * OpenGLで(GDKのドローイングエリアに)teapotを描画する ! ソースプログラムの所在 * 以下のsvnのリポジトリ ** https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/gtkglext-sample/ ! 実行手順 8< #svnから持ってくる(実行した直下にgtkglext-sampleディレクトリができる) svn export https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/gtkglext-sample/ #持ってきたディレクトリに移動 cd gtkglext-sample #make make #実行 ./teapot-sample >8 !! リンク * [GTK+ OpenGL Extension|https://projects.gnome.org/gtkglext/] * [リファレンスマニュアル|https://developer.gnome.org/gtkglext/stable/](英語)