2016-12-31 63 views
-1

我想加載opengl32.dll運行時(使用從Win32的LoadLibrary),然後加載OpenGL2/3/4函數。我試圖使用glew,但它不能解決一些wgl函數。GLEW(OpenGL擴展牧馬人):在運行時加載opengl DLL?

所以有一種簡單的方法,我可以用GLEW導入的OpenGL功能加載OpenGL的動態?

+0

你應該顯示你的代碼。當你說「無法解決」我假設你的編譯失敗了? – diametralpitch

+0

@diametralpitch它不能解決它,因爲我沒有在編譯時鏈接到opengl32.dll; **我其實不想**。我想加載它像LoadLibrary(「opengl32.dll」); – Coder32

+0

@diametralpitch但Glew實際上需要這些wgl函數;這就是問題所在...... – Coder32

回答

0

有可能做你在問什麼,但你將不得不採取不同的方式。通常,在運行時手動加載共享庫(或dll)時,必須使用符號搜索要使用的函數並將它們分配給句柄,以便可以調用它們。

你現在正在做的事情將永遠不會編譯,因爲你是明確使用鏈接器無法找到的符號名稱。您必須將所有這些未解決的函數調用與查詢替換爲您手動加載的共享庫(opengl32.dll)。

glfw project中有一些很好的代碼可供您參考。看看_glfwInitWGLloadWGLExtensions函數。

+0

等等,所以glfw動態加載OpenGL?你可以用glfw使用glew嗎? – Coder32

+0

顯然,它的確如此。至於使用glfw與glfw,看看這[後](http://gamedev.stackexchange.com/questions/34102/can-i-use-glfw-and-glew-together-in-the-same-碼)。 – diametralpitch

+0

謝謝:)另外(不同的主題),你認爲這是一個**好主意**在運行時加載OpenGL或應該堅持編譯時間? – Coder32