Técnicas de implementação de Gui


7

Eu tenho trabalhado com algumas bibliotecas de GUI orientadas a jogos tentando encontrar um bom ajuste. Mais especificamente, uma GUI que funcionará no Windows, Linux, iPhone e Android com um código especial mínimo.

No meu trabalho de reparo, notei que algumas bibliotecas gostam de renderizar suas GUIs em uma textura fora da tela que apenas exibe a textura.

Esta é uma técnica GUI comum?
Não há um impacto no desempenho com GUIs que mudam rapidamente?

Se eu fosse o implementador, renderizaria a GUI diretamente em cada quadro. Existe algo particularmente errado ou ineficiente na renderização direta?


Atualização: por 'GUI centrada no jogo', quero dizer uma estrutura de GUI que não possui a janela ou o loop principal. Existem outros recursos que eu adicionaria, mas o loop principal é o único crítico. Isso geralmente envolve vários backends de renderização, injeção de entrada e um método de atualização.


"Bibliotecas orientadas a jogos" é bastante ampla. Você pode reduzi-lo um pouco? World of Warcraft tem uma interface gráfica muito diferente da Doom original.
Andrew Russell

Respostas:


5

Sim, essa é uma técnica comum e dois benefícios imediatos vêm à mente:

1) A técnica de renderização para textura como forma de contornar os problemas inerentes ao suporte a várias resoluções e / ou proporções. Você pode dimensionar a textura para o tamanho da tela ou apenas renderizá-la no centro. É apenas uma maneira de virtualizar seu sistema de coordenadas.

2) Se renderizado em uma textura, isso pode ser aplicado a uma malha ou quad e transformado. Por exemplo, se você quiser que sua GUI (Menu) apareça em um ângulo de 30 graus em relação à câmera, renderize em textura, envolva a textura em um quadrilátero e depois o transforme.

A maior parte da renderização em uma textura é essencialmente a mesma que a renderização em um buffer; portanto, não, há pouco ou nenhum impacto no desempenho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.