如果這個問題很微不足道或者是無稽之談,我很抱歉...這是我正在開發的第一個應用程序之一。 (Unfortunatley)我不是開發者。NSOpenGLView與OpenGL 3.2核心
我有一個NSWindow,其中包含一個自定義視圖,它是NSOpenGLView
的子類。
由於NSWindow
和NSOpenGLView
通過Interface Builder中創建的,我不需要init
既不NSOpenGLContext
也不NSOpenGLPixelFormat
。
我最近切換到OS X Lion,現在我想要利用新的OpenGL 3.2。
從蘋果的文檔,我發現,要啓用OpenGL 3.2我只需寫類似:初始化NSOpenGLContext
前
NSOpenGLPixelFormatAttribute pixelFormatAttributes[] =
{
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
0
};
NSOpenGLPixelFormat *pixelFormat = [[[NSOpenGLPixelFormat alloc] initWithAttributes:pixelFormatAttributes] autorelease];
NSOpenGLContext* openGLContext = [[[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil] autorelease];
。
這是很容易的(甚至對我來說),但我怎麼能實現這個在我的應用程序,因爲我從來沒有init
NSOpenGLContext
?
由於NSOpenGLView
是從Interface Builder創建的,所以方法-initWithFormat:shareContext:
不會被調用。
所以我試着像這樣的東西覆蓋-initWithCoder:
方法:
-(id)initWithCoder:(NSCoder *)aDecoder
{
NSOpenGLPixelFormatAttribute pixelFormatAttributes[] =
{
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
0
};
NSOpenGLPixelFormat *pixelFormat = [[[NSOpenGLPixelFormat alloc] initWithAttributes:pixelFormatAttributes] autorelease];
NSOpenGLContext* openGLContext = [[[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil] autorelease];
[super initWithCoder:aDecoder];
[self setOpenGLContext:openGLContext];
[openGLContext makeCurrentContext];
}
,並通過glGetString(GL_VERSION)
的報道,但在創建上下文不再與應用程序交互的OpenGL 3.2是否正確裝入......沒有什麼是在視圖中繪製..
我試過我所知道的一切......但我無法解決這個問題。
我應該怎麼做呢?