【问题标题】:Can I explicitly disable deprecated OpenGL functions in my code?我可以在我的代码中明确禁用已弃用的 OpenGL 函数吗?
【发布时间】:2012-02-28 12:17:06
【问题描述】:

我最近开始编写使用更新的 OpenGL 实现的代码。然而,我确实注意到,在较新的 OpenGL 实现中,许多旧函数被视为已弃用。如果我只想使用适当的功能,有什么办法可以禁用它们?

【问题讨论】:

    标签: c++ opengl opengl-3


    【解决方案1】:

    使用ARB_create_context_profile 并请求向前兼容的上下文。

    仅针对 OpenGL 定义了向前兼容的上下文 3.0 及更高版本。它们不得支持标记的功能 如该版本的 API 已弃用,而 非前向兼容上下文必须支持所有功能 该版本,无论是否已弃用。

    【讨论】:

    • 好的,我猜黑屏意味着它有效。有什么方法可以获取有关被调用函数不起作用或根本不起作用的信息?
    • 这些函数不受支持/未实现,因此正确的实现应该在GetProcAddress 上为所有 1.2 后的函数返回 nullptr,而对于静态链接的 1.2 之前的函数则崩溃或静默失败(我个人更喜欢“崩溃”,但大多数实现者可能会默默地失败,即“黑屏”)。从理论上讲,调试上下文应该为您提供更详细的信息(例如,为每个未实现的 func 调用回调),但它们似乎不起作用(无论如何,在我的 nvidia 卡上不适合我)。
    【解决方案2】:

    您可以按照此处的建议使用http://www.opengl.org/registry/api/gl3.h 进行编译: Forcing OpenGL Core Profile Only

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2015-09-12
      • 2014-12-28
      相关资源
      最近更新 更多