Windows マシンで OpenGL 4.0 コンテキストを作成するプログラムがあります。このコードは、自分のコンピューターでは機能しますが、友人のコンピューターでは機能しません。 wglCreateContextAttribsARB
私の友人の Nvidia カードは OpenGL 4.4 をサポートしており、下位互換性のあるコンテキストを返すことができるはずですが、NULL を返します。他のすべての呼び出しは期待どおりに機能します。
これはコンテキスト作成コードです:
dc = GetDC(window::get());
PIXELFORMATDESCRIPTOR pfd = { 0 };
pfd.nSize = sizeof(pfd);
pfd.dwFlags = PFD_DOUBLEBUFFER | PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 32;
pfd.cDepthBits = 32;
int nPixelFormat = ChoosePixelFormat(dc, &pfd);
SetPixelFormat(dc, nPixelFormat, &pfd);
HGLRC tempRC = wglCreateContext(dc);
wglMakeCurrent(dc, tempRC);
glewInit();
static const int attributes[] = {
WGL_CONTEXT_MAJOR_VERSION_ARB, 4,
WGL_CONTEXT_MINOR_VERSION_ARB, 0,
NULL
};
rc = wglCreateContextAttribsARB(dc, NULL, attributes);
if (rc == NULL) {
abort();
}
wglMakeCurrent(NULL, NULL);
wglDeleteContext(tempRC);
wglMakeCurrent(dc, rc);
glClearColor(0.2, 0.4, 0.6, 1.0);
glEnable(GL_DEPTH_TEST);
wglSwapIntervalEXT(1);
別の人が同様の問題を抱えており、この質問をここに投稿しました。しかし、彼らの問題を解決したことは、私の問題を解決することではありません。私は完全に困惑しています。