SDL / OpenGL: Implementando um "Thread de Carregamento"

Atualmente, tento implementar um "Tópico de carregamento" para um mecanismo de jogo muito básico, que cuida do carregamento, por exemplo. texturas ou áudio enquanto o segmento principal continua renderizando uma mensagem / tela adequada até que a operação seja concluída ou até mesmo renderize cenas de jogos regulares enquanto o carregamento de objetos menores ocorre em segundo plan

Agora, eu não sou de longe um especialista em OpenGL, mas ao implementar esse mecanismo de "carregamento", descobri rapidamente que o OGL não gosta de acessar o contexto de renderização de um thread diferente daquele em que ele foi criado. Pesquisei no Google e a solução parece ser:

"Crie um segundo contexto de renderização no thread e compartilhe-o com o contexto do thread principal"

O problema disso é que eu uso o SDL para cuidar do meu gerenciamento de janelas e criação de contexto, e, tanto quanto posso ver pela inspeção da API, não há como dizer ao SDL para compartilhar contextos entre si:

Cheguei à conclusão de que as melhores soluções para o meu caso são:

Approach A) Altere a biblioteca SDL para oferecer suporte ao compartilhamento de contexto com as funções específicas da plataforma (wglShareLists () e glXCreateContext () eu assumo)

Approach B) Deixe o "Loading Thread" carregar apenas os dados na memória e processá-los em um formato compatível com OpenGL e passá-los para o thread principal que, por exemplo, cuida do upload da textura para o adaptador gráfico. Obviamente, isso se aplica apenas a dados que precisam de um contexto OpenGL válido para serem executados

A primeira solução é a menos eficiente, eu acho. Eu realmente não quero alterar o SDL e, além disso, li que o compartilhamento de contexto não é uma operação de alto desempenho. Portanto, minha próxima abordagem seria a segunda abordagem até agor

EDIT: Em relação à "operação de alto desempenho": li o artigo errado, na verdade não é tão intenso no desempenho. O artigo sugeriu mudar as operações intensivas da CPU para o segundo thread com um segundo contexto. Desculpe por iss

Depois de toda esta introdução, eu realmente apreciaria se alguém pudesse me dar algumas dicas e comentários para as seguintes perguntas:

1) Existe alguma maneira de compartilhar contextos com SDL e seria bom fazer assi

2) Existe alguma outra maneira mais "elegante" de carregar meus dados em segundo plano que eu possa ter perdido ou não pensad

3) Minha intenção de seguir a abordagem B pode ser considerada uma boa escolha? Ainda haveria uma pequena sobrecarga nas operações do OpenGL no meu thread principal que bloqueiam a renderização ou é tão pequeno que pode ser ignorado?

questionAnswers(1)

yourAnswerToTheQuestion