У меня многопоточное приложение, в котором я пытаюсь выполнить рендеринг с разными потоками. Сначала я попытался использовать один и тот же контекст визуализации между всеми потоками, но я получал текущие контексты NULL для других потоков. Я читал в Интернете, что один контекст может быть только в одном потоке за раз.
Поэтому я решил сделать что-то другое. Я создаю окно, я получаю HDC от него и создаю первый RC. Скорее всего, я разделяю этот HDC между потоками, и в каждом новом потоке, который я создаю, я получаю новый RC от того же HDC, и я делаю его актуальным для этого потока. Каждый раз, когда я это делаю, возвращаемый RC всегда отличается (обычно предыдущее значение + 1). Я делаю утверждение, чтобы проверить, возвращает ли wglGetCurrentContext()
RC, и похоже, что он возвращает тот, который был только что создан. Но после выполнения рендеринга я не получаю рендеринга, и если я вызываю GetLastError()
, я получаю ошибку 6 (неверный дескриптор??)
Итак, означает ли это, что, несмотря на то, что каждый новый вызов wglCreateContext()
дает мне новое значение, почему-то это означает, что все эти разные значения являются одним и тем же "Каналом связи" с вызовами OpenGL?
Означает ли это, что мне всегда придется недействить предыдущий контекст визуализации в потоке и активировать его на новом? Мне действительно нужно постоянно выполнять эту синхронизацию или есть ли другой способ решить эту проблему?