Al principio, usé OpenGL para dibujar en el hilo principal. Luego, puse OpenGL en un hilo secundario y no pude dibujar.
Llamas a
wglMakeCurrent en tu subproceso para conectar HDC al HGLRC actualmente disponible. Recuerda, el HGLRC de OPENGL solo se puede usar en un subproceso al mismo tiempo. , es seguro para subprocesos. Por supuesto, debe llamar a wglMakeCurrent (NULL, NULL) antes de que finalice el subproceso.
Si esto falla en su versión,
Sugerencia: úselo cuando. ingresando a un hilo
wglCreateContext (hdc);
wglMakeCurrent (hdc, hglrc);
Úselo antes de que salga el hilo
wglMakeCurrent; (NULL, NULL);
wglDeleteContext (hglrc);
Esto está bien en general
============ == ====================================
Si eres dinámico Si creas este control en tu hilo, estará bien
Si lo creas usando el hilo de mensajes, no funcionará. No puedes usarlo en el hilo que creaste
De hecho, si no, es muy necesario. No se recomienda utilizar subprocesos. Si es posible, se recomienda utilizar Timer para solucionarlo.
================. ============ =======================
La razón por la que mencioné anteriormente es que OPENGL es seguro para subprocesos y su contexto de representación no se puede usar en múltiples Se usa en dos subprocesos al mismo tiempo. Otro: si desea desarrollar un programa OPENGL, si usa el marco MFC, se recomienda que primero comprenda MFC; Es un desarrollo puro de SDK, debe concentrarse en estudiar los requisitos de OPENGL para el entorno operativo. Tal vez su versión de VS sea superior y proporcione un control TIMER. Este es un temporizador. Envía un mensaje WM_TIMER a su ventana cada intervalo que defina. Si aún no conoce TIMER, le sugiero que lo aprenda primero. eche un vistazo al mecanismo de mensajes de WINDOWS; recuerde, OPENGL no es para principiantes en programación sin una cierta base, incluso si escribe el código, no sabe por qué funciona así y la programación multiproceso es una; Punto difícil No solo tenemos que resolver el problema de sincronización, sino que también es muy difícil de depurar y, a menudo, encontramos algunos problemas inexplicables. Al igual que su problema, este problema se debe a que sus requisitos operativos para OPENGL no están claros.