我在C#中有一个OpenGL程序,但我也想从C ++ DLL中执行OpenGL函数。 我的C ++库所做的更改是否会对C#程序生效?
修改: 为了更清楚,我想分享两种语言的OpenGL相同的上下文。
我是C ++的PInvoking函数,它使用我的C#代码中的OpenGL。
答案 0 :(得分:4)
当前的OpenGL上下文是一个线程本地的全局状态。
这意味着只要C ++和C#代码在同一个线程中执行,那么在其中任何一个中发出的OpenGL命令都是兼容的。
但是,如果您正在处理多个/不同的线程,则需要使用wglMakeCurrent()
在C ++中激活OpenGL上下文(假设它是在C#中创建的)。为了做到这一点,你必须以某种方式传播正确的句柄。