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