OpenGL でマルチサンプリング

OpenGL でマルチサンプリングを使うのにちょっとハマったので備忘録として残して置こうかと。

以下、マルチサンプリングを使う場合の初期化です。

 

1. ウィンドウの作成(ダミーです)

2. OpenGL コンテキスト作成

3. 拡張機能の初期化(glewInit)

4. wglChoosePixelFormatARB() でピクセルフォーマットNo. を取得

5. OpenGL コンテキストの破棄

6. ウィンドウの削除

7. ウィンドウ作成(本番用)

8. 取得したピクセルフォーマットNo. で DescribePixelFormat() と SetPixelFormat() を実行

9. OpenGL コンテキスト作成

10. 拡張機能の初期化(glewInit)

…以下、初期化やらなにやらを。

 

注意することは wglChoosePixelFormatARB() ピクセルフォーマットNo. を取得後、OpenGL コンテキストやデバイスコンテキストだけでなく、ウィンドウ自体も一度削除しないといけないことです。手元の環境ではウィンドウを削除しない場合、 8. の SetPixelFormat() が必ず失敗しました。

 

あと、マルチサンプリングの初期化に成功したら

glEnable( GL_MULTISAMPLE );

glEnable( GL_SAMPLE_ALPHA_TO_COVERAGE );

でマルチサンプリングを有効にしてください。

また、マルチサンプリングの状態を確認するといいと思います。

glGetIntegerv( GL_SAMPLE_BUFFERS, &buffers );

glGetIntegerv( GL_SAMPLES, &samples );

 

iPhone 開発での Sandy Bridge(HD3000)トラブル

MacBookPro13(SnowLeopard) を使って iPhone の開発を行っていたところ、 iOS SDK 4.1 で OpenGL ES Application のテンプレートからプロジェクトを作成して、そのままビルド&実行すると、iOS simulator 上で作成したアプリケーションが起動直後に終了してしまいました。Lion にしても症状変わらず。

 

http://www.iphonedevsdk.com/forum/iphone-sdk-game-development/75003-opengl-calls-causes-simulator-crash-sandy-bridge-mcbook.html

 

なるほど、xxxViewController.m の glDrawArrays() に問題があると。

確かに glDrawArrays() をコメントアウトすると異常終了しなくなります。

 

試しに他の描画関数を使ってみたところ

 

× glDrawArrays()

× glDrawElements()

× glBegin()~glEnd() ← ES では未実装

 

でした。やっぱり。

 

結局、App Store から Xcode4 をダウンロード+インストールしたら iOS SDK が 4.3 になり、正常動作するようになりました。

 

基本 Windows+VisualStudio なので、Mac にはなかなか慣れないです(´・ω・`)