我正在尝试检查我的 NSOpenGLView 是否具有有效的上下文,但似乎对 openGLContext 的调用无法帮助我解决这个问题。openGLContext 似乎总是返回一个 NsOpenGlContext (如果视图有一个,它会返回当前上下文,如果没有,它会创建一个上下文并返回它)。我可以使用另一种方法吗?
问问题
1663 次
1 回答
5
OpenGL 上下文是按线程选择的。NSOpenGLView 将告诉您应该使用哪个上下文在视图中绘制(即哪个上下文已调用 [context setView: view]),但不会告诉您当前在执行代码的线程中选择了哪个上下文。这有点像在旧 Windows 中选择笔/画笔来绘制。
我了解您想知道是否可以在视图中绘图。为此,请检查当前上下文是否是 NSOpenGLView 返回的上下文,如果不是,请将其设置为。
要获取线程的当前 OpenGL 上下文:
NSOpenGLContext* context = [NSOpenGLContext currentContext];
将一个设置为当前:
[context makeCurrentContext];
清除当前上下文(即不设置当前上下文):
[NSOpenGLContext clearCurrentContext];
一般来说,请参阅 NSOpenGLContext 的文档。
于 2010-08-02T17:54:23.670 回答