我想用C#的包裝器在C++中製作多實例引擎。
以這樣的方式創建引擎,使得有像CreateEngine這樣的函數,該函數將需要引擎初始化的窗口或控件的句柄作爲參數。
在C#中,我製作了一個自定義控件,用於初始化繪圖的opengl並具有渲染事件。
如果我只控制一個控件的實例一切正常,但當我創建另一個放置在另一個窗口時,第二個閃爍爲黑色(交替顯示黑色的清晰屏幕顏色,儘管在我的代碼中沒有引用黑色)。他們都沒有畫任何東西。相反,他們只是清除屏幕的顏色。第一個控件將空間清除爲藍色,將第二個控件清理爲紅色(理論上)。 由於沒有什麼可以繪製的,我不認爲我必須分享wgl列表或其他東西(我反正做了,但是註釋那部分代碼不會解決任何問題)。OpenGL閃爍問題
還有一些人認爲要注意:我不是OpenGL n00b,但是這讓我很困惑。我也檢查了我所知道的這個區域的一切。只有當控件的更多實例出現時纔會出現此問題。 在C#中,我重寫了清除視口的OnPaint事件,並且每33毫秒將其無效。我也重寫了OnPaintBackground,因爲這似乎會產生閃爍的問題。
在嘗試使用OpenGL命令之前是否使每個上下文都是當前的? – genpfault 2010-07-21 18:42:07
是的。我有一個SetCurrentEngine命令,我在每次渲染之前調用該函數調用wglMakeCurrent。 – Sanctus2099 2010-07-21 21:12:05