O que é o modo imediato?
Na programação de computação gráfica, o modo imediato é um estado de renderização no qual a sequência normal de ações e a estrutura na qual elas existem são completamente ignoradas e, em alguns casos, desativadas. Isso significa que o aplicativo em execução precisa chamar diretamente as funções necessárias para mostrar qualquer coisa em um dispositivo de exibição, como um monitor, em vez de depender de ciclos inatos fora do programa. O modo imediato é usado com mais frequência para programas que requerem os tempos de renderização mais rápidos possíveis, como aplicativos multimídia ou videogames, ou é usado como uma ferramenta de ensino ao aprender como usar bibliotecas gráficas complexas. Um programa mal projetado ou implementado incorretamente que usa a renderização em modo imediato pode fazer com que as telas em branco ou áreas em branco de uma tela apareçam e persistam, porque nenhuma chamada automática é feita para redesenhar o quadro atual, se necessário. Uma variação é conhecida como modo misto, no qual um programa mantém a estrutura de renderização retida no lugar enquanto tenta controlar determinadas partes dela através de funções no estilo de modo imediato.
Em muitos aplicativos de computador, a renderização de informações ou gráficos para um dispositivo de exibição é realizada por meio da arquitetura de programa orientada a eventos. Isso significa que a tela é redesenhada apenas em resposta a algum tipo de entrada de um programa ou do usuário. Isso funciona bem para programas como processadores de texto ou navegadores da Web, mas não funciona para aplicativos como players de multimídia, software de renderização artística ou videogames nos quais uma tela pode precisar ser redesenhada 60 ou mais vezes por segundo sem nenhum tipo de entrada. A solução é usar o modo imediato.
Em vez de permitir que um sistema operacional ou biblioteca de gráficos controle quando e como uma exibição é atualizada e renderizada, o programa assume o controle completo, removendo quaisquer barreiras entre o dispositivo de exibição e o código do aplicativo. Dessa maneira, um programa pode criar seu próprio loop de exibição, usando temporizadores e outro código personalizado, para que a tela seja redesenhada quantas vezes forem necessárias para alcançar o resultado desejado. Uma complicação no uso do modo imediato é que alguns dos recursos transparentes da renderização no modo retido - como um mecanismo de geometria - podem não estar disponíveis, exigindo que o aplicativo tenha suas próprias implementações. Outra questão é que um programa pode exigir uma grande quantidade de poder de processamento para manter o loop de renderização a uma velocidade aceitável.
Uma alternativa ao uso exclusivo do modo imediato é usar um modo de renderização misto. Nesse design, a estrutura de renderização de modo retido é mantida no lugar para que toda a funcionalidade de uma biblioteca de gráficos possa ser usada, mas certas funções ou métodos são substituídos e substituídos por código gerado pelo usuário que pode forçar a estrutura de renderização existente a operar em um maneira que é mais parecida com o modo imediato. Esse método pode ser eficaz, mas também pode criar código difícil de depurar e pode ter resultados inesperados, dependendo de como o código do usuário e o código da biblioteca interagem.