我正在使用 Visual Studio 10 中的 OpenGL 3D 可视化开发应用程序。可视化的控件是用 C++ 编写的。初始化 OpenGL 窗口时,我尝试通过直接使用扩展 (wglChoosePixelFormatARB) 来启用多重采样。
正如我已经了解到的,您首先必须创建一个虚拟窗口并使用适当的属性调用“wglChoosePixelFormatARB”。后来我使用此方法返回的“像素格式”来创建真正的 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
我收到的像素格式值似乎没问题,但是当我使用这种像素格式创建一个新窗口时,这个窗口保持为空(白色或灰色) -例如,在我的笔记本电脑中使用英特尔高清显卡时,WGL_SAMPLES_ARB
窗口设置为 8 时保持白色 - 使用 4 效果很好。
我现在的问题是我找不到从程序中检查当前像素格式设置是否有效的方法。对于如何处理这些情况,我将不胜感激。