wglCreateContext gibt NULL zurück
-
Hallo,
wie im Titel beschrieben gibt mir wglCreateContext NULL zurück.
GetLastError sagt mir allerdings 0, also kein Fehler. Ich habe keine Ahnung wo der Fehler liegt.int Display::enableOpenGL(){ HGLRC dummyRC; int nPixelFormat; this->hdc = GetDC(this->hwnd); if(this->hdc == nullptr){ //ERRORMSG ist so definiert ERRORMSG("GetDC failed"); //#define ERRORMSG(msg) MessageBoxA(NULL,msg,"Error",MB_ICONERROR) return -1; } PIXELFORMATDESCRIPTOR pfd; memset(&pfd,0,sizeof(pfd)); pfd.nSize = sizeof(pfd); pfd.cColorBits = 32; pfd.cAlphaBits = 8; pfd.cDepthBits = 32; pfd.iPixelType = PFD_TYPE_RGBA; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER | PFD_SUPPORT_OPENGL; nPixelFormat = ChoosePixelFormat(this->hdc,&pfd); if(nPixelFormat == 0){ ERRORMSG("ChoosePixelFormat failed"); return -2; } if(!SetPixelFormat(this->hdc,nPixelFormat,&pfd)){ ERRORMSG("SetPixelFormat failed"); return -3; } dummyRC = wglCreateContext(this->hdc); //Hier gibt mir wglCreateContext NULL zurück if(dummyRC == nullptr){ ERRORMSG("wglCreateContext failed"); char errorcode[32]; _itoa_s(GetLastError(),errorcode,32,10);//GetLastError gibt mir 0 zurück ERRORMSG(errorcode); return -4; } if(!wglMakeCurrent(this->hdc,dummyRC)){ ERRORMSG("wglMakeCurrent failed"); return -5; } if(glewInit() != GLEW_OK){ ERRORMSG("glewInit failed"); return -6; } if(!glewIsSupported("WGL_ARB_create_context")){ ERRORMSG("WGL_ARB_create_context is not supported"); return -7; } int ContextAttributes[] = {WGL_CONTEXT_MAJOR_VERSION_ARB,4, WGL_CONTEXT_MINOR_VERSION_ARB,0, WGL_CONTEXT_FLAGS_ARB, 0,0}; this->hrc = wglCreateContextAttribsARB(this->hdc,nullptr,ContextAttributes); if(this->hrc == nullptr){ ERRORMSG("wglCreateContextAttribsARB failed"); return -8; } wglMakeCurrent(this->hdc,NULL); wglDeleteContext(dummyRC); wglMakeCurrent(this->hdc,this->hrc); return 1; };
Eigentlich bin ich mir sicher, dass dieser Code schon mal funktioniert hat.
Hoffe mir kann jemand helfen.
floorball
-
Probier's mal mit 24 depth bits.
-
Kein Unterschied, noch immer der gleiche Fehler.
-
Probier mal pfd.nVersion = 1;
-
Hatte ich auch schon probiert. Ergebnis: Noch immer das gleiche Problem.
-
könnte an pfd.cColorBits = 32; liegen. Das ist afaik nur rgb ohne a. Versuch mal 24.
-
Daran liegt es auch nicht.
-
Ich bin ein Vollidiot!!!!!!
Ich hatte opengl32.dll fälschlicherweise vor langer zeit mal in opengl.dll unbenannt. In der Annahme es würde sich um OpenGL.dll handeln habe ich diese in meinen Pprojektordner gezogen und nichts hat mehr funktioniert.
Das bittere an der Sache ist, dass ich dachte es würde an meinem Laptop liegen und nicht an mir (dabei liegt sowas nie am Computer) und habe ihn vor kurzem erst neu aufgesetzt.
Bin jetzt erstmal beschäftigt Programme die ich nun nicht mehr habe nachzuinstallieren...
-
Aua!
Ich kann deine Verärgerung nachvollziehen.