Visual Studio 10 で OpenGL 3D ビジュアライゼーションを使用してアプリケーションを開発しています。ビジュアライゼーションのコントロールは C++ で記述されています。OpenGL ウィンドウを初期化するときに、拡張機能 (wglChoosePixelFormatARB) を直接使用してマルチサンプリングを有効にしようとしています。
既に学んだように、まずダミーのウィンドウを作成し、適切な属性を指定して「wglChoosePixelFormatARB」を呼び出す必要があります。後で、このメソッドによって返される「pixelformat」を使用して、実際の 3D ウィンドウを作成します。私のコードでは、呼び出しは次のようになります。
const int attribs[] = {
WGL_DRAW_TO_WINDOW_ARB, GL_TRUE,
WGL_SUPPORT_OPENGL_ARB, GL_TRUE,
WGL_DOUBLE_BUFFER_ARB, GL_TRUE,
WGL_PIXEL_TYPE_ARB, WGL_TYPE_RGBA_ARB,
WGL_COLOR_BITS_ARB, 32,
WGL_DEPTH_BITS_ARB, 24,
WGL_STENCIL_BITS_ARB, 8,
WGL_SAMPLE_BUFFERS_ARB, GL_TRUE,
WGL_SAMPLES_ARB, m_multiSample,
0
};
if(wglChoosePixelFormatARB(hdc,attribs,NULL,1,&pixelformat,&numFormats)!=0 && pixelformat>0) {
m_pixelFormat = pixelformat;
}
次にSetPixelFormat
、以前に見つかったピクセルフォーマットで新しいウィンドウを呼び出します。
手順全体は一部の構成ではうまく機能しますが、GPU と値の特定の組み合わせを使用すると、WGL_SAMPLES_ARB
問題ないように見えるピクセル形式の値を受け取りますが、このピクセル形式で新しいウィンドウを作成すると、このウィンドウは空のままになります (白またはグレー) -たとえば、私のノートブックでインテル HD グラフィックスを使用しWGL_SAMPLES_ARB
、ウィンドウの設定を 8 にすると白のままになります。4 を使用すると完全に機能します。
私の問題は、現在のピクセルフォーマット設定が有効かどうかをプログラム内から確認する方法が見つからなかったことです。これらの状況に対処する方法について何か助けをいただければ幸いです。