Потоки и OpenGL
Так вот создалось первое окно, получились и создались контексты hdc и hglrc, инициализировались параметры opengl и адрес функции отрисовки сообщается потоку. Результат - отрицательный: wglMakeCurrent возвращает false, GetLastError - 170 (The requested resource is in use) - в окошке понятное дело рисуется лажа всякая.
Далее создается второе окно - описанная ситуация начинает твориться с ним, а с первым все вдруг становиться в порядке
Создаем третье окно - второе с первым работают, третье - нет.
Два дня бьюсь не могу победить эту фичу.
Поток вызывает ф-ю отрисовки между функциями EnterCriticalSection, LeaveCriticalSection, так что дело не должно быть в неправильной синхронизации (хотя... кто знает?) Может кто пнет в нужном направлении?
Не уверен что всё правильно понял, но кроме того что перед отрисовкой вызывать wglMakeCurrent(hdc,hglrc) надо еще после отрисовки вызывать wglMakeCurrent(0,0) чтобы освободить контекст, потому что RenderingContext может быть Current только для одного потока одновременно.
Цитата:
Originally posted by DigitalWolF
... надо еще после отрисовки вызывать wglMakeCurrent(0,0) чтобы освободить контекст...
... надо еще после отрисовки вызывать wglMakeCurrent(0,0) чтобы освободить контекст...
Не знаю, я никогда не вызывал ее и все работало.
Перенес тело потока в ф-ю Execute VCL класса TThread, вместо критической секции - Synchronize и все заработало так как надо. А в чем была проблема так и не разобрался