【发布时间】:2012-02-28 12:17:06
【问题描述】:
我最近开始编写使用更新的 OpenGL 实现的代码。然而,我确实注意到,在较新的 OpenGL 实现中,许多旧函数被视为已弃用。如果我只想使用适当的功能,有什么办法可以禁用它们?
【问题讨论】:
我最近开始编写使用更新的 OpenGL 实现的代码。然而,我确实注意到,在较新的 OpenGL 实现中,许多旧函数被视为已弃用。如果我只想使用适当的功能,有什么办法可以禁用它们?
【问题讨论】:
使用ARB_create_context_profile 并请求向前兼容的上下文。
仅针对 OpenGL 定义了向前兼容的上下文 3.0 及更高版本。它们不得支持标记的功能 如该版本的 API 已弃用,而 非前向兼容上下文必须支持所有功能 该版本,无论是否已弃用。
【讨论】:
GetProcAddress 上为所有 1.2 后的函数返回 nullptr,而对于静态链接的 1.2 之前的函数则崩溃或静默失败(我个人更喜欢“崩溃”,但大多数实现者可能会默默地失败,即“黑屏”)。从理论上讲,调试上下文应该为您提供更详细的信息(例如,为每个未实现的 func 调用回调),但它们似乎不起作用(无论如何,在我的 nvidia 卡上不适合我)。
您可以按照此处的建议使用http://www.opengl.org/registry/api/gl3.h 进行编译: Forcing OpenGL Core Profile Only
【讨论】: