2016-11-13 101 views
3

m working on a program which should have multiple views of a model. I would like to use multiple GLControls`的。OpenTK多個GLControl與單個上下文

是否有可能創建多個使用相同GraphicsContext的GLControl?

我成功地在多線程環境中創建了這個,但上下文不共享。所以我必須爲每個上下文加載模型,這是不好的。

我對單線程環境僞代碼看起來是這樣的:

glControl1.MakeCurrent(); 
// Render here 
glControl1.SwapBuffers(); 
glControl2.MakeCurrent(); 
// Render here too 
glControl2.SwapBuffers(); 

我想這由線程上創建多個上下文,但它與

Error: 170" at "MakeCurrent()

glControl2

墜毀。 (即使glControl2.Context.MakeCurrent(null)切換上下文之前沒有工作)

也許你有一些提示可以幫助我。

回答

3

當我發佈這個問題後,我找到了解決方案。

我在我想呈現我的東西的線程上創建了一個新的GraphicsContext。

//Here does a new thread start-> 
IGraphicsContext control2Context = new GraphicsContext(GraphicsMode.Default,glControl2.WindowInfo); 
while(true) 
{ 
    glControl1.MakeCurrent() 
    //render 
    GL.Flush(); 
    glControl1.SwapBuffers(); 

    control2Context.MakeCurrent(glControl2.WindowInfo); 
    //render 
    GL.Flush(); 
    glControl2.SwapBuffers(); 
} 

正如你所看到的,我沒有使用glControl2.MakeCurrent()。相反,我創建了這個新的上下文control2Context

也許這可以幫助面臨同樣問題的人。

+0

請評論我的答案,如果有什麼問題。如果一切正常,我會將其標記爲答案。 – bitQUAKE