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 );