今週の進み具合 #2

進み具合 (2013年12月8日 - 12月14日)

レンダーステートの実装を行いました。ラスタライザ、ブレンド、深度ステンシル、サンプラとそれぞれのステージに対応するステートの API の作成と、実際に Cocoa + OpenGL 上で動くように実装していきました。

Cocoa 向けのビルドターゲットを Mavericks に引き上げ

開発に使っている OS X のバージョンを 10.8 (Mountain Lion) から 10.9 (Mavericks) にアップグレードしました 。OS X 10.8 では OpenGL 3.2 まで対応していましたが、Mavericks からようやく OpenGL 4.1 まで対応しました。なお、今回のアップグレードで1世代前のドライバはおおむね GL 3.3 にとどまっているようです。1

趣味で作っているゲームは、OS X 10.8 以降をターゲットに開発を始めました。しかし 10.8 が OpenGL 3.2 までしか対応していなかっため、ビルドのターゲットバージョンを 10.9 以降に引き上げることにしました。サンプラステートを実装する上で、OpenGL 3.3 から追加されたサンプラオブジェクトを使用しているからです。 なにより、Mavericks へのアップグレードが無償で行えることが大きく作用しました。

これで Windows と同じく OpenGL 3.3 以降(できれば 4.x)を使ったゲーム開発が楽しめます。

glGetString のログ

せっかくなので Mountain Lion から Mavericks へのアップグレード前後での glGetString のログを貼っておきます。

auto version = reinterpret_cast<char const*>(glGetString(GL_VERSION));
std::cout << "OpenGL Version: " << version << std::endl;

それぞれ Intel HD Graphics 4000 を使用しています。 まず、OS X 10.8 で何も指定しなかった場合:

// Mountain Lion
OpenGL Version: 2.1 INTEL-8.16.74

次に OS X 10.8 で NSOpenGLPixelFormat を作成する際 NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core を指定した場合:

// Mountain Lion + NSOpenGLProfileVersion3_2Core
OpenGL Version: 3.2 INTEL-8.16.74

次に OS X 10.9 で NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core を指定した場合:

// Mavericks + NSOpenGLProfileVersion3_2Core
OpenGL Version: 4.1 INTEL-8.18.26

今週の実装予定

今週は、エフェクトパスの作成とシェーダのコンパイルとリンクまで実装します。早く終えたら、エフェクトパラメータの自動生成まで触りたいです。

(来週はたして "今週の進み具合 #3" はあるのでしょうか…。)


  1. OS X 10.9 の OpenGL Capabilities Tables によると、Radeon HD 2400 や Intel HD Graphics 3000 は OpenGL version 3.3 にとどまっています。 

Leave a Reply