2010-06-01 66 views
0

我想检查一下,我的NSOpenGLView是否有一个有效的上下文,但是看起来对openGLContext的调用不会帮助我弄清楚这一点。 openGLContext似乎总是返回一个NsOpenGlContext(它返回当前的上下文,如果视图有一个,如果没有,它会产生一个上下文并返回)。还有另一种方法可以替代吗?判断一个NSOpenGLView是否有一个有效的上下文(Cocoa OSX)

回答

4

每个线程选择OpenGL上下文。 NSOpenGLView会告诉你哪个上下文应该被用来在视图中绘制(也就是说哪一个已经调用了[context setView:view]),而不是执行代码的线程当前选择了哪个上下文。这有点像选择笔/笔刷在旧的Windows中绘制。

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

为了得到当前OpenGL上下文的线程:

NSOpenGLContext* context = [NSOpenGLContext currentContext]; 

要设置一个作为当前:

[context makeCurrentContext]; 

要清除当前上下文(即没有设定当前上下文。):

[NSOpenGLContext clearCurrentContext]; 

通常,请参阅NSOpenGLContext的文档。

相关问题