2017-08-24 37 views
-1

我在C#中有一個OpenGL程序,但我也想從C++ DLL執行OpenGL函數。 我的C++庫所做的更改是否會對C#程序生效?我可以同時使用多種語言的OpenGL嗎?

編輯: 爲了更清楚起見,我想分享兩種語言的OpenGL相同的上下文。

我是從我的C#代碼中使用OpenGL的C++的函數。

+2

這似乎是一個壞主意。將UI和圖形保存在一個應用程序中,並讓該應用程序處理與用戶界面和圖形相關的所有內容。然後,您可以將密集的*非* UI /圖形工作卸載到C++庫。 –

+0

是的,我不會這樣做。這只是好奇心。可能嗎? –

+0

您是否希望C++和C#共享opengl上下文,或者讓兩個上下文在同一個應用程序中以不同的語言並行生活? – Frank

回答

4

當前OpenGL上下文是線程局部全局狀態。

這意味着只要C++和C#代碼在同一個線程中執行,那麼在任何一箇中發佈的OpenGL命令都是兼容的。但是,如果您正在處理多個/不同的線程,則需要使用wglMakeCurrent()激活C++中的OpenGL上下文(假設它是使用C#創建的)。爲了做到這一點,你必須以某種方式傳播適當的句柄。

相關問題