OpenGL Viewer Control & Rendering Contexts
-
23-09-2019 - |
Pergunta
Eu criei um controle do OpenGL Viewer que pode ser simplesmente descartado em um formulário do Windows (no momento do design) e atribuí uma lista de exibição do OpenGL (no tempo de execução).
O controle do visualizador lida com a navegação, opções de exibição (por exemplo, cor de fundo), etc. Também é responsável por criar e destruir contextos de renderização e dispositivo, conforme necessário.
Obviamente, cada instância de controle do visualizador possui seu próprio contexto de dispositivo, a 'janela' onde a imagem é desenhada.
Perguntas:
- Como cada instância de controle do visualizador deve gerenciar contextos de renderização?
- Cada instância deve ter seu próprio contexto ou compartilhar um contexto de renderização global?
Estou particularmente preocupado com a forma como isso afeta a criação de fontes WGL (WGLuseFontBitmaps e WGluseFontOutLines), que requer um contexto de renderização (seja qual for o contexto atual) e um contexto de dispositivo.
- Preciso criar cada fonte WGL para cada combinação de contexto de renderização/dispositivo?
Talvez minha abordagem seja falha.
Solução
Eu iria com o contexto por abordagem de controle. Você precisa se lembrar de que as extensões são baseadas em contexto, para que você precise vinculá -las para cada um que você faz (eu uso GLEW_MX para lidar com isso).
Além disso, você pode compartilhar listas de exibição entre os contextos (desde que estejam na mesma GPU) e a criação de fontes WGL cria listas de exibição para que você esteja bem.