Mac平台替代wglGetCurrentContext的OpenGL函数咨询(AGL已废弃)
替代wglGetCurrentContext的Mac平台方案
嘿,刚看到你的问题——从Windows转Mac开发,找替代wglGetCurrentContext的函数,而且AGL已经废弃了对吧?给你两个当前官方支持的方案:
1. 用Core OpenGL的C接口:CGLGetCurrentContext()
这是最贴近wglGetCurrentContext的替代,属于纯C的API,返回当前线程绑定的OpenGL上下文指针,用法逻辑和Windows上的wgl函数完全一致。
- 需要引入头文件:
<OpenGL/CGL.h> - 编译时记得链接OpenGL框架
2. Cocoa框架下的NSOpenGLContext(Objective-C/Swift)
如果你的Mac程序是基于Cocoa开发的(用Objective-C或Swift),可以直接用框架提供的类方法:
- Objective-C:
[NSOpenGLContext currentContext],返回当前的NSOpenGLContext实例 - Swift:
NSOpenGLContext.current(),同样能获取当前上下文对象
额外注意点
- OpenGL上下文和线程是绑定的,调用这些函数时要确保在你设置上下文的线程里操作,这点和Windows平台的规则一致
- 如果你是新项目,Apple现在更推荐用Metal作为图形API,但如果要继续维护OpenGL代码,上面的两种方法都是当前官方支持的,完全可以替代废弃的AGL
内容的提问来源于stack exchange,提问作者pdid
相关产品推荐
相关产品推荐

