bug initialisation de l'affichage [openGL] - Programmation
MarshPosté le 08-05-2001 à 15:06:42
voila, j'ai un petit/gros pb. Je fais un jeu qui utilise l'openGL pour l'affichage. Tout roule impec sauf un truc. Visual C++ me dit ceci, lorsque je lance le jeu en mode debug : "First-chance exception in glPong.exe (GDI32.DLL): 0xC0000005: Access Violation." (ca apparait 3 fois). En fait, c'est avant même que le jeu soit lancé, à l'initialisation de l'affichage openGL. La fonction qui chie est la suivante :
C'est le SetPixelFormat. J'ai essayé pas mal de trucs, que j'ai lu dans un bouquin ou vu dans des exemples, mais ca revient toujours à ça. Heureusement, ce bug méga-chiant ne fait pas planter le jeu (sous Win98), et il marche sans pb. Seulement, des fois (ca arrive de temps en temps), lorsque le jeu tourne, cette erreur se produit à chaque frame......
Marsh Posté le 08-05-2001 à 15:06:42
voila, j'ai un petit/gros pb. Je fais un jeu qui utilise l'openGL pour l'affichage. Tout roule impec sauf un truc. Visual C++ me dit ceci, lorsque je lance le jeu en mode debug :
"First-chance exception in glPong.exe (GDI32.DLL): 0xC0000005: Access Violation." (ca apparait 3 fois).
En fait, c'est avant même que le jeu soit lancé, à l'initialisation de l'affichage openGL. La fonction qui chie est la suivante :
void EnableOpenGL(HWND hWnd,HDC * hDC,HGLRC *hRC)
{
PIXELFORMATDESCRIPTOR pfd;
int iFormat;
*hDC=GetDC(hWnd);
ZeroMemory(&pfd,sizeof(pfd));
pfd.nSize = sizeof(pfd);
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cDepthBits = 16;
pfd.iLayerType = PFD_MAIN_PLANE;
iFormat = ChoosePixelFormat(*hDC,&pfd);
SetPixelFormat(*hDC,iFormat,&pfd);
*hRC = wglCreateContext(*hDC);
wglMakeCurrent(*hDC,*hRC);
}
C'est le SetPixelFormat. J'ai essayé pas mal de trucs, que j'ai lu dans un bouquin ou vu dans des exemples, mais ca revient toujours à ça.
Heureusement, ce bug méga-chiant ne fait pas planter le jeu (sous Win98), et il marche sans pb. Seulement, des fois (ca arrive de temps en temps), lorsque le jeu tourne, cette erreur se produit à chaque frame......
Sous NT4, en revanche ca fait tout planter.
une idée ?