【问题标题】:Unable to link OpenGL compatibility profile (EXT symbols not recognized)无法链接 OpenGL 兼容性配置文件(无法识别 EXT 符号)
【发布时间】:2015-04-01 02:14:04
【问题描述】:

我决定使用GLEW 来处理扩展,而不是请求核心配置文件并且必须迁移我的代码。

作为第一步,我想通过EXT 配置文件添加对FBO's 的支持。

问题是 gcc 不会链接我的代码(OSX 10.10),它不识别任何gl*EXT() 函数。比如glBindFrameBufferEXT()

标记为未定义的符号。 (glBindFrameBuffer() 也是 无法识别...)

我链接到 GLEW 并尝试使用具有兼容性配置文件的 GLEXT 或 GLFW,但没有任何效果!我错过了图书馆吗?我如何告诉 gcc 使用正确的 GL 配置文件?我必须迁移到核心配置文件吗?

【问题讨论】:

    标签: macos opengl gcc fbo


    【解决方案1】:

    在 MacOS X 中 GLEW 做的不多,因为 MacOS X 上没有很多 OpenGL 扩展,并且由于 OpenGL 集成到 MacOS X 中的方式,可用框架支持的 OpenGL 版本的所有功能都立即可用

    ……如果您使用的是 MacOS X 的 OpenGL 实现不支持的扩展功能。

    MacOS X 是 OpenGL 家族中的怪人:OpenGL 在操作系统的核心图形例程中的使用级别非常低,因此操作系统对 OpenGL 的支持非常好。但它在操作系统中构建得如此之深,以至于如果不更新整个操作系统就几乎无法更新。

    解决方案:不要使用该扩展程序。 FBO 已与 OpenGL-3.3 一起引入,因此您必须创建一个 3.3 核心配置文件上下文并可以直接使用这些函数(不带 ...EXT)。

    【讨论】:

    • 感谢这些伟大的澄清!有没有办法使用 GL3.3 api 进行编译(例如可以访问 glGenFramebuffers() )但还没有迁移到核心配置文件?为了简便起见,我仍在使用一些固定的管道功能,并且现在不需要 GLSL 版本 gt 120。如果可能的话,我如何告诉 gcc 正确链接我的项目?非常感谢!
    • @DanK:不幸的是(对你而言)在 MacOS X(和 alsa Mesa 的 BTW)中,OpenGL 实现兼容性配置文件受支持。这意味着:如果您需要 OpenGL-3 功能,例如 FBO,您别无选择,只能使用完整的 OpenGL-3 并留下遗留功能。
    • 对于任何想了解 Mesa 和 FBO 的人:与不添加任何 OpenGL 扩展的 MacOS X 不同,除了一些 Apple 特定的扩展之外,Mesa确实实现了很多 OpenGL扩展,也可用于使用 Mesa 创建的 OpenGL-1.x 上下文。但是 Mesa 不支持 >=OpenGL-3.3 兼容性配置文件;它只支持核心配置文件。
    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2012-08-08
    相关资源
    最近更新 更多