0
我想檢查一下,我的NSOpenGLView是否有一個有效的上下文,但是看起來對openGLContext的調用不會幫助我弄清楚這一點。 openGLContext似乎總是返回一個NsOpenGlContext(它返回當前的上下文,如果視圖有一個,如果沒有,它會產生一個上下文並返回)。還有另一種方法可以替代嗎?判斷一個NSOpenGLView是否有一個有效的上下文(Cocoa OSX)
我想檢查一下,我的NSOpenGLView是否有一個有效的上下文,但是看起來對openGLContext的調用不會幫助我弄清楚這一點。 openGLContext似乎總是返回一個NsOpenGlContext(它返回當前的上下文,如果視圖有一個,如果沒有,它會產生一個上下文並返回)。還有另一種方法可以替代嗎?判斷一個NSOpenGLView是否有一個有效的上下文(Cocoa OSX)
每個線程選擇OpenGL上下文。 NSOpenGLView會告訴你哪個上下文應該被用來在視圖中繪製(也就是說哪一個已經調用了[context setView:view]),而不是執行代碼的線程當前選擇了哪個上下文。這有點像選擇筆/筆刷在舊的Windows中繪製。
我知道你想知道你是否可以在視圖中繪製。爲此,請檢查當前上下文是否是NSOpenGLView返回的上下文,如果不是,請將其設置爲。
爲了得到當前OpenGL上下文的線程:
NSOpenGLContext* context = [NSOpenGLContext currentContext];
要設置一個作爲當前:
[context makeCurrentContext];
要清除當前上下文(即沒有設定當前上下文。):
[NSOpenGLContext clearCurrentContext];
通常,請參閱NSOpenGLContext的文檔。