确定NSOpenGLView是否具有有效的上下文(Cocoa OSX)

时间:2010-06-01 18:13:41

标签: cocoa macos nsopenglview

我试图检查我的NSOpenGLView是否有一个有效的上下文,但似乎对openGLContext的调用无法帮我解决这个问题。 openGLContext似乎总是返回一个NsOpenGlContext(它返回当前上下文,如果视图有一个,如果不是它创建一个上下文并返回它)。我可以使用另一种方法吗?

1 个答案:

答案 0 :(得分:5)

每个线程选择OpenGL上下文。 NSOpenGLView将告诉您应该在视图中使用哪个上下文(即,哪个上下文已调用[context setView:view]),但不会在执行代码的线程中选择当前选择的上下文。这有点像在旧Windows中选择笔/画笔来绘制。

我知道你想知道你是否可以在视野中画画。为此,请检查当前上下文是否是NSOpenGLView返回的上下文,如果不是,请将其设置为。

获取线程的当前OpenGL上下文:

NSOpenGLContext* context = [NSOpenGLContext currentContext];

将一个设为当前:

[context makeCurrentContext];

清除当前上下文(即设置无当前上下文):

[NSOpenGLContext clearCurrentContext];

一般情况下,请参阅NSOpenGLContext的文档。