我想用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