2011-01-14 89 views
17

是否存在編譯器標誌或僅強制OpenGL核心配置文件的其他方式?我想在使用glRotatef等不推薦使用的函數時出錯。僅強制OpenGL核心配置文件

EDIT1:我使用的Linux,不過,我也想知道如何做到這一點在Windows

EDIT2:我寧願讓在編譯時錯誤,但運行時錯誤將是確定的,以及。

+1

你在哪個平臺上?你的問題的答案取決於你用什麼來鏈接到OpenGL。 – ltjax 2011-01-14 16:10:51

回答

4

要看什麼創造你的OpenGL上下文。

如果您使用GLFW(我真誠地建議對獨立OGL窗口的應用程序),那麼你可以在創建窗口之前做:

glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR,3); 
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR,1); 
glfwOpenWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); 

// the last line shouldn't be necessary 
// as you request a specific GL context version - 
// - at least my ATI will then default to core profile 

請注意,如果您申請預先3.0 GL上下文在現代硬件/驅動程序上,您可能會收到兼容模式下的最新可能上下文。檢查你的GPU從glGetString(GL_VERSION)返回以確定。

如果您使用另一個API來創建OpenGL上下文,請查看其參考手冊以獲取類似的功能。


BTW: 我相信這是不可能得到在編譯時錯誤 - 你的編譯器不知道你的要求後,你會收到什麼樣的OpenGL上下文(如果有的話)。確保您沒有使用版本過度功能的正確方法是測試glGetError()

另外,如果您爲Windows編譯,我推薦使用gl3w擴展包裝。