Библиотеки GTK # и OpenTK - PullRequest
       14

Библиотеки GTK # и OpenTK

0 голосов
/ 31 декабря 2011

Как соединить эти две вещи? Как создать виджет (или любой холст) для рисования в нем из другого потока?

1 Ответ

2 голосов
/ 04 января 2012

Вы можете отредактировать один из примеров в загрузке исходного кода OpenTk, чтобы иметь окно GTK # и окно OpenTK Gamewindow в одном приложении.

Скачать исходный код OpenTK здесь: http://sourceforge.net/projects/opentk/files/latest/download

Сначала убедитесь, что примеры работают, создавая и выполняя примеры. Попробуйте использовать многопоточность OpenTK, она даст вам два окна с вращающимися кубиками.

Теперь отредактируйте пример, чтобы вызвать окно gtk # вместо второго окна игры openTK.

Откройте файл 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 в одном приложении.

...