我寫了一個使用glew初始化OpenGL上下文的DLL。首先,我創建了一個虛擬窗口來創建適當的上下文。其次,創建最終的上下文和窗口。 glewInit()
函數調用成功和一些布爾變量,如GLEW_ARB_texture_storage
設置爲1(我有一個視頻適配器與opengl 3.3兼容)。glewInit()和客戶端程序中的GLEW_ARB_xxx_失敗
注意
glewExperimental=GL_TRUE
雖然。
但是,當我使用上面的DLL編寫客戶端程序時,同樣的GLEW_ARB_texture_storage
變量等於GL_FALSE
。
因此,我想知道glewInit()
應該在哪裏最終被調用? 似乎從DLL調用它是不夠的。我是否也應該從客戶端程序端調用它?
好的。它是否也解釋了爲什麼glGetString(GL_EXTENSIONS)在創建虛擬上下文時返回有效的字符串,並且在創建最終上下文時返回NULL指針? – Zyend 2014-12-02 06:31:17
@Zyend:是的,不僅如此。但是當你在最終的上下文中調用它時,它也會生成'GL_INVALID_ENUM'。在調用之前和之後檢查'glGetError(...)'。 – 2014-12-02 08:26:52
你是對的Andon,第一個創建的上下文是兼容性配置文件,第二個是核心配置文件。將GLEW_EXPERIMENTAL設置爲GL_TRUE可以解決我庫中的問題。 但是,在客戶端程序中,例如,我無法測試GLEW_ARB_texture_storage。而在DLL端這個變量= GL_TRUE。我改變了我的DLL到一個靜態庫...並在那裏工作。 – Zyend 2014-12-02 08:55:20