You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 MacBook Air环境下OpenGL立即模式函数能否正常运行?

在M1 MacBook Air上运行OpenGL立即模式课程代码的解决方案

问题背景

使用2020款M1 MacBook Air,计算机图形学课程基于Windows环境,教授提供的示例代码依赖glBegin()、glColor3f()、glLoadIdentity()等OpenGL立即模式函数。尝试用CLion+CMake搭配GLFW、GLAD搭建环境时,编译器提示这些旧函数“未声明标识符”,但glGenBuffer()、glBindBuffer()等现代OpenGL函数可正常编译。测试多个GLAD版本(包括3.1)均无法解决该问题。

后续尝试结果:

  • 移除GLAD,直接包含<OpenGL/gl.h>,且不配置GLFW的上下文版本与兼容模式时,OpenGL上下文版本为2.1,立即模式函数可正常运行
  • 若设置GLFW_CONTEXT_VERSION_MAJOR=3、GLFW_CONTEXT_VERSION_MINOR=3并指定兼容模式,GLFW无法创建窗口

原因分析

macOS已停止对OpenGL的官方支持,2024年系统仅提供两种OpenGL上下文:

  1. OpenGL 2.1兼容模式:完整支持立即模式等旧API
  2. OpenGL 4.1核心模式:已弃用,且不包含立即模式相关函数

GLAD生成的加载器默认针对核心模式,因此无法识别立即模式函数;同时macOS不支持3.x版本的兼容上下文,导致设置3.3兼容模式时窗口创建失败。

可行解决方案

  • 无需使用GLAD,直接引入系统自带的OpenGL头文件:<OpenGL/gl.h>
  • 不要添加任何与OpenGL版本、兼容模式相关的glfwWindowHint()配置,让GLFW默认创建OpenGL 2.1兼容上下文
  • 直接编译运行课程提供的示例代码即可

内容的提问来源于stack exchange,提问作者atai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:42:22