segmentation fault is not due to opengl RC, because when you try to change some states, opengl checks if the RC (wich pratically IS opengl) is assigned to the calling thread.
if it’s not, opengl discard changes.
it’s just like if you don’t call opengl function at all.
so, into a multithreaded application, every thread must have exclusive access to opengl, and since you have only one RC (normally) you have to manually assign it to the thread functions.
the function to handle thread assignement of RC under win32 is wglMakeCurrent().
note that when a tread owns a RC, it must be released by the same thread before it can be used by other threads.
PS: well, the way opengl behaves when a thread don’t own the RC is a spec issue, but sometime specs are not followed correctly…
i can tell for sure that with MS generic and matrox g200 drivers it works this way.
other cards… don’t know
[This message has been edited by dmy (edited 04-21-2000).]