无法链接 OpenGL 兼容性配置文件(无法识别 EXT 符号)
Posted
技术标签:
【中文标题】无法链接 OpenGL 兼容性配置文件(无法识别 EXT 符号)【英文标题】:Unable to link OpenGL compatibility profile (EXT symbols not recognized) 【发布时间】:2015-04-01 02:14:04 【问题描述】:我决定使用GLEW
来处理扩展,而不是请求核心配置文件并且必须迁移我的代码。
作为第一步,我想通过EXT
配置文件添加对FBO's
的支持。
问题是 gcc 不会链接我的代码(OSX 10.10)
,它不识别任何gl*EXT()
函数。比如glBindFrameBufferEXT()
标记为未定义的符号。 (glBindFrameBuffer() 也是 无法识别...)
我链接到 GLEW 并尝试使用具有兼容性配置文件的 GLEXT 或 GLFW,但没有任何效果!我错过了图书馆吗?我如何告诉 gcc 使用正确的 GL 配置文件?我必须迁移到核心配置文件吗?
【问题讨论】:
【参考方案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 兼容性配置文件;它只支持核心配置文件。以上是关于无法链接 OpenGL 兼容性配置文件(无法识别 EXT 符号)的主要内容,如果未能解决你的问题,请参考以下文章
我的OpenGL学习进阶之旅解决Android OpenGL ES 调试工具 GAPID 无法识别Android设备的问题
我的OpenGL学习进阶之旅解决Android OpenGL ES 调试工具 GAPID 无法识别Android设备的问题