Sign in to follow this  
TomTetlaw

OpenGL Access Violation in wglMakeCurrent

Recommended Posts

When I try to call wglMakeCurrent, I get an access violation. My program only runs in one thread and one window, and I've got a valid device context and rendering context, I can't see what the problem is. I'm using VC++ 2010 and am running Widows 7 64-bit.

EDIT: Sys_Error is just an error reporting function, just does a MessageBox then exits.

[code]static HDC gl_devcontext;
static HGLRC gl_rcontext;

void _GL_Init (void)
{
int pf;
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), 1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0
};

gl_devcontext = GetDC (W_GetHandle());
if (!gl_devcontext)
Sys_Error ("Couldn't get device context!");
pf = ChoosePixelFormat (gl_devcontext, &pfd);
if (!SetPixelFormat(gl_devcontext, pf, NULL))
Sys_Error ("Couldn't choose pixel format!");

gl_rcontext = wglCreateContext(gl_devcontext);
if (!gl_rcontext)
Sys_Error ("Couldn't create OpenGL Rendering Context!");

if (!wglMakeCurrent(gl_devcontext, gl_rcontext))
Sys_Error ("Couldn't set device context and rendering context!");
}[/code]

Share this post


Link to post
Share on other sites
I hope this helps.

The full error message is:

[code]Unhandled exception at 0x02cbf4e6 in Game_VOID-2011.exe: 0xC0000005: Access violation reading location 0xbaadf049.[/code]

The stack at the point of the crash is:

[code]> nvoglv32.dll!02d9f4e6()
[Frames below may be incorrect and/or missing, no symbols loaded for nvoglv32.dll]
nvoglv32.dll!02e65fc0()
nvoglv32.dll!02d9f91e()
nvoglv32.dll!02da0e7d()
nvoglv32.dll!02e5aa39()
kernel32.dll!75913677()
ntdll.dll!77539f02()
ntdll.dll!77539ed5()
[/code]

The debug output from Visual Studio:

[code]'Game_VOID-2011.exe': Loaded 'C:\Users\Tom\Documents\Visual Studio 2010\Projects\Game_VOID-2011\Debug\Game_VOID-2011.exe', Symbols loaded.
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\opengl32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\glu32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\ddraw.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\dciman32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\devobj.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded.
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\nvoglv32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\wintrust.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\crypt32.dll', Cannot find or open the PDB file
'Game_VOID-2011.exe': Loaded 'C:\Windows\SysWOW64\msasn1.dll', Cannot find or open the PDB file
The thread 'Win32 Thread' (0xdd8) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1774) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x38c) has exited with code 0 (0x0).
First-chance exception at 0x02d9f4e6 in Game_VOID-2011.exe: 0xC0000005: Access violation reading location 0xbaadf049.
Unhandled exception at 0x02d9f4e6 in Game_VOID-2011.exe: 0xC0000005: Access violation reading location 0xbaadf049.[/code]

Share this post


Link to post
Share on other sites
Wow, my god. After all this, it turns out that hWnd was the cause of the problem. It was being set to NULL because CreateWindowEx couldn't find the window class I gave it because I miss-typed it. Thankyou for your help anyway!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this