Contextos de renderização
Um contexto de renderização do OpenGL é uma porta por meio da qual todos os comandos OpenGL passam. Cada thread que faz chamadas OpenGL deve ter um contexto de renderização atual. Os contextos de renderização vinculam o OpenGL aos sistemas de janelas do Windows.
Um aplicativo especifica um contexto de dispositivo Windows quando cria um contexto de renderização. Esse contexto de renderização é adequado para desenhar no dispositivo que o contexto do dispositivo especificado faz referência. Em particular, o contexto de renderização tem o mesmo formato de pixel que o contexto do dispositivo. Para obter mais informações, consulte Renderizando funções de contexto.
Apesar dessa relação, um contexto de renderização não é o mesmo que um contexto de dispositivo. Um contexto de dispositivo contém informações pertinentes ao GDI (componente gráfico) do Windows. Um contexto de renderização contém informações pertinentes ao OpenGL. Um contexto de dispositivo deve ser especificado explicitamente em uma chamada GDI. Um contexto de renderização é implícito em uma chamada OpenGL. Você deve definir o formato de pixel de um contexto de dispositivo antes de criar um contexto de renderização.
Um thread que faz chamadas OpenGL deve ter um contexto de renderização atual. Se um aplicativo fizer chamadas OpenGL de um thread que não tem um contexto de renderização atual, nada acontecerá; a chamada não tem efeito. Um aplicativo geralmente cria um contexto de renderização, define-o como o contexto de renderização atual de um thread e, em seguida, chama funções OpenGL. Quando ele termina de chamar funções OpenGL, o aplicativo desacopla o contexto de renderização do thread e exclui o contexto de renderização. Uma janela pode ter vários contextos de renderização desenhando para ela ao mesmo tempo, mas um thread pode ter apenas um contexto de renderização atual e ativo.
Um contexto de renderização atual tem um contexto de dispositivo associado. Esse contexto de dispositivo não precisa ser o mesmo contexto de dispositivo usado quando o contexto de renderização foi criado, mas deve referenciar o mesmo dispositivo e ter o mesmo formato de pixel.
Um thread pode ter apenas um contexto de renderização atual. Um contexto de renderização pode ser atual para apenas um thread.