有没有一种方法可以在另一个线程中使用OpenTK/OpenGL绘制到屏幕上?我尝试使用的代码是
GL.Clear(ClearBufferMask.ColorBufferBit);
GL.ClearColor(Color.Black);
GL.Begin(PrimitiveType.Quads);
GL.Color3(Color.FromArgb(255, 0, 0));
GL.Vertex2(-1, 1);
GL.Color3(Color.FromArgb(0, 255, 0));
GL.Vertex2(1, 1);
GL.Color3(Color.FromArgb(0, 0, 255));
GL.Vertex2(1, -1);
GL.Color3(Color.FromArgb(0, 255, 255));
GL.Vertex2(-1, -1f);
GL.End();
SwapBuffers();
字符串
上面的代码在创建GameWindow的同一个线程中工作,但从另一个线程调用时则不工作。
2条答案
按热度按时间0yycz8jy1#
我可以用这段代码交换OpenGL接受的线程
字符串
nhjlsmyf2#
下面是一个如何使用IGLFWGraphicsContext MakeNoneCurrent()方法实现这一点的例子。只是要小心,很容易得到忙碌资源异常。也不要忘记在处理游戏窗口之前停止线程。同样可以使用GLControl实现。
Image
字符串