-1

この2つのことに参加するにはどうすればよいですか?別のスレッドからウィジェットを描画するためのウィジェット(または任意のキャンバス)を作成するにはどうすればよいですか?

4

1 に答える 1

2

ここからダウンロードした OpenTk ソースの例の 1 つを編集して、同じアプリケーションに GTK# ウィンドウと OpenTK ゲームウィンドウを含めることができます。

ここから OpenTK ソースをダウンロードしてください: http://sourceforge.net/projects/opentk/files/latest/download

まず、サンプルをビルドして実行し、サンプルが機能することを確認します。具体的には、OpenTK マルチスレッド 1 を試してください。回転するキューブを含む 2 つのウィンドウが表示されます。

ここで、例を編集して、2 番目の openTK ゲームウィンドウの代わりに gtk# ウィンドウを生成します。

ファイル opentk/Source/Examples/OpenTK/Test/Multithreading.cs を開きます

次のように、gtk ウィンドウを作成する関数を作成する必要があります。

static void gtkWindow() {
    Application.Init ();
    var gtkform = new Gtk.Window("test");
    var btn = new Gtk.Button("flip");
    btn.Clicked += HandleBtnClicked;
    gtkform.Add(btn);
    gtkform.ShowAll();
    Application.Run();
}

次のように、メイン ループを編集してこのウィンドウを起動します。

// launch threads
for (int i = 0; i < ThreadCount; i++)
{
    if (i == 0) {
        Thread t = new Thread(RunGame);
        t.IsBackground = true;
        t.Priority = ThreadPriority.BelowNormal;
        t.Start();
        threads.Add(t);
    } else {
        Thread t = new Thread(gtkWindow);
        t.IsBackground = true;
        t.Priority = ThreadPriority.BelowNormal;
        t.Start();
        threads.Add(t);
    }
}

これで、Gtk# ウィンドウと OpenTK ゲーム ウィンドウが同じアプリケーションに表示されます。

于 2012-01-04T14:36:10.387 に答える