この2つのことに参加するにはどうすればよいですか?別のスレッドからウィジェットを描画するためのウィジェット(または任意のキャンバス)を作成するにはどうすればよいですか?
1084 次
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 に答える