2011-12-31 5 views
-1

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

+0

Это зависит от того, что вы пытаетесь выполнить. Вы можете просто визуализировать материал в OpenTK, передать указатель на окно GTK # и сделать его рендеринг. Есть много способов объединить эти две библиотеки, но многопоточность будет довольно сложной, так как вам придется останавливать контекст OpenGL для рендеринга с помощью GTK #. –

+0

@Robert Rouhani Покажите мне хотя бы один из способов, пожалуйста. – itun

ответ

2

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

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

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

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

Открыть файл opentk/Source/Примеры/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 игры окна в одном приложении.

Смежные вопросы