Mac OS X の OpenGL でゲームを作るために、ここ数日間で AGL やら CGL やらをいじってて思い到ったこと。
Cocoa プログラマなら、CGL (Core OpenGL) をベースにするのが分かりやすい。
適切なパラメタで NSOpenGLPixelFormat を作って、それを元に NSOpenGLView を作って、そこから -[NSOpenGLView CGLContextObj] で CGL のコンテキストを取り出す。
次に、フルスクリーン用のコンテキストを作る。フルスクリーンにすると数倍描画効率が上がるので、フレーム処理をベースにしたゲーム制作ではフルスクリーンにしないことは基本的に考えられない(かといって、デバッグ用途やウィンドウ内でちまちまやりたいゲームのことを考えると、フルスクリーンのみのサポートというのも考えられないだろう)。そしてこのとき、CGL をベースにする。
適切なパラメタで CGLPixelFormatObj を作り、それを CGLChoosePixelFormat() して、CGLCreateContext() 関数を呼び出して、そのときに NSOpenGLView からもらったCGL のコンテキストを第2引数に渡すのがポイント。これでコンテキストがシェアされて、テクスチャなどが共有されるようになる。
このあたりを参考にしつつ。
速度が求められる場合でも CGL を操れば十分で、Cocoa プログラマに AGL は必要ないですね。
コメントを書く