Apple には、これを行う方法を正確に示すGLEssentialsというサンプル コード プロジェクトがあります (これは Mac OS X および iOS のサンプル コード プロジェクトであることに注意してください)。
基本的に、NSOpenGLView (サンプル コードの NSGLView クラス) をサブクラス化し、以下を使用して awakeFromNib メソッドを実装する必要があります。
- (void) awakeFromNib
{
NSOpenGLPixelFormatAttribute attrs[] =
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFADepthSize, 24,
// Must specify the 3.2 Core Profile to use OpenGL 3.2
NSOpenGLPFAOpenGLProfile,
NSOpenGLProfileVersion3_2Core,
0
};
NSOpenGLPixelFormat *pf = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs] autorelease];
if (!pf)
{
NSLog(@"No OpenGL pixel format");
}
NSOpenGLContext* context = [[[NSOpenGLContext alloc] initWithFormat:pf shareContext:nil] autorelease];
[self setPixelFormat:pf];
[self setOpenGLContext:context];
}
また、3.2 API から削除された OpenGL API 呼び出しを使用すると、アプリがクラッシュすることにも注意してください。ここに 3.2 仕様のPDF ドキュメントがあるので、変更点を確認できます。