-1
如何加入這兩件事?如何創建一個小部件(或任何畫布)從另一個線程中繪製它?GTK#&OpenTK庫
如何加入這兩件事?如何創建一個小部件(或任何畫布)從另一個線程中繪製它?GTK#&OpenTK庫
您可以在此處編輯OpenTk源代碼中的一個示例,在同一應用程序中使用GTK#窗口和OpenTK Gamewindow。
下載OpenTK源位置: http://sourceforge.net/projects/opentk/files/latest/download
首先,請確保實例通過構建和運行實例的工作。特別嘗試OpenTK多線程,它應該爲您提供兩個旋轉立方體的窗口。
現在,編輯示例以生成一個gtk#窗口,而不是第二個openTK遊戲窗口。
打開文件opentk /來源/例子/ OpenTK /測試/ 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遊戲窗口。
這取決於你想要完成什麼。你可以在OpenTK中渲染東西,將窗口指針傳遞給GTK#並讓它渲染。將這兩個庫放在一起有很多方法,但多線程將非常困難,因爲您必須停止使用GTK#進行渲染的OpenGL上下文。 – 2011-12-31 06:52:04
@Robert Rouhani請讓我看看至少有一種方式。 – itun 2011-12-31 20:20:17