仅强制使用OpenGL核心配置文件

时间:2011-01-14 16:01:28

标签: opengl

是否有编译器标志或强制OpenGL核心配置文件的其他方式?当我使用glRotatef之类的弃用函数时,我想得到一个错误。

EDIT1:我正在使用Linux,但是,我也有兴趣了解如何在Windows中执行此操作

EDIT2:我宁愿在编译时遇到错误,但运行时错误也没问题。

4 个答案:

答案 0 :(得分:9)

您可以使用gl3.h代替gl.h来编译代码。

http://www.opengl.org/registry/api/gl3.h

答案 1 :(得分:8)

使用WGL_CONTEXT_CORE_PROFILE_BIT_ARB尝试wglCreateContextAttribsARB()

glXCreateContextAttribsARBGLX_CONTEXT_CORE_PROFILE_BIT_ARB

您可能会发现this example可用作测试平台。

答案 2 :(得分: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上下文,请查看其参考手册以了解类似的功能。


顺便说一句: 我相信在编译时不可能出错 - 你的编译器无法知道你的请求后会收到什么样的OpenGL上下文(如果有的话)。确保您不使用版本不正确功能的正确方法是测试glGetError()

另外,如果您为Windows编译,我建议使用gl3w扩展包装。

答案 3 :(得分:0)

我找到了另一种使用非官方OpenGL软件开发工具包的方法:

http://glsdk.sourceforge.net/docs/html/index.html

使用' GL Load'组件可以加载OpenGL的核心配置文件,并删除OpenGL 3.1或更高版本的兼容性枚举和函数。这里有一个简短的指南:

https://www.opengl.org/wiki/OpenGL_Loading_Library#Unofficial_OpenGL_SDK