2010-06-01 62 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的文檔。

相關問題