PDA

View Full Version : Sharing display list with more than one context



SandsofTime
10-19-2011, 09:38 PM
Hi
I am trying to share display lists of the main window with two secondary windows. I am able to do so using wglShareLists(). I was able to share the lists but the problem is that it only works for only one secondary window at a time. If I try to display list with the other window then the return value of wglShareLists() is false and the error returned by GetLastError() is a cryptic '3221684311'. I tried swapping the first secondary window with the second secondary window, but it wglShareLists() is successful only on the first call and fails on the second call. I have already made sure that that no context is acquired until the sharing is done.

Aleksandar
10-20-2011, 12:45 AM
Are you using GL 3.0+ context?
If so, that is not the proper way to share DLs.

V-man
10-20-2011, 12:34 PM
I have already made sure that that no context is acquired until the sharing is done.

What is an acquired context?

Just make sure you don't have resources created in any of the windows when you call wglShareLists. It is highly likely to work in that case.

Also, make sure that they have the same pixelformat.
http://msdn.microsoft.com/en-us/library/dd374390%28VS.85%29.aspx

Also, make sure you have a good chip in your machine such as ATI/AMD or nVidia. There are a lot of users reporting various problems with Intel(Windows) since their drivers are not good.

SandsofTime
10-20-2011, 03:50 PM
By acquired context what I mean is that making the context current with the display context wglMakeCurrent. I have the same pixel format for both the windows. The thing is that it works for either of the secondary windows, but just for the one with which the context is shared with first. It works only the first time wglShareLists is called. The second time I call it for the other window, it fails. In short, I am unable to share the display lists with more than one context and the error message given has no help associated with it.

Aleksandar
10-20-2011, 04:03 PM
You still didn't answered what type of context you are creating.
I'm not sure for the compatibility profile, but I am 100% sure that the same scenario should occur with GL 3+ core profile context.

SandsofTime
10-20-2011, 04:27 PM
I figured the solution to the problem. Lets say you have three OpenGl contexts, ctxMain, ctx1, ctx2.

wglShareLists(ctx1,ctxMain);
wglShareLists(ctx2,ctxMain);

Doing this fails for the second wghShareLists call. However, if I do the following

wglShareLists(ctx2,ctx1);
wglShareLists(ctx1,ctxMain);

then it works just fine.