仅强制OpenGL核心配置文件
是否存在编译器标志或仅强制OpenGL核心配置文件的其他方式?我想在使用glRotatef等不推荐使用的函数时出错。仅强制OpenGL核心配置文件
EDIT1:我使用的Linux,不过,我也想知道如何做到这一点在Windows
EDIT2:我宁愿让在编译时错误,但运行时错误将是确定的,以及。
尝试wglCreateContextAttribsARB()与WGL_CONTEXT_CORE_PROFILE_BIT_ARB
。
或glXCreateContextAttribsARB与GLX_CONTEXT_CORE_PROFILE_BIT_ARB
。
您可能会发现this example可用作测试平台。
要看什么创造你的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
扩展包装。
我已经找到另一种方式用做非官方的OpenGL的软件开发工具包:
http://glsdk.sourceforge.net/docs/html/index.html
通过使用“GL加载”组件它可能加载的OpenGL的核心配置文件,并删除兼容性OpenGL 3.1或更高版本的枚举和函数。一个简短的howto可以在这里找到:
https://www.opengl.org/wiki/OpenGL_Loading_Library#Unofficial_OpenGL_SDK
你在哪个平台上?你的问题的答案取决于你用什么来链接到OpenGL。 – ltjax 2011-01-14 16:10:51