Pergunta

Eu preciso para desenhar o plano de fundo para um espaço 2D atirador do desdobramento. Eu preciso implementar 3 camadas de estrelas: Um. Nebulosa distante (em movimento muito lento), no fundo, uma camada de longe estrelas (movimento lento) e uma camada de estrelas próximas (movimento normal) em cima dos outros dois

A maneira que eu primeiro tentei isso era usando 3 texturas de 320 x 480 que estavam pngs transparente das estrelas. Eu costumava GL_BLEND e SRC_ALPHA, ONE_MINUS_SRC_ALPHA.

Os resultados não foram muito bem, mesmo no 3GS. Nos dispositivos de primeira geração do FPS caiu para 40..50 então eu acho que eu estou fazendo isso da maneira errada.

Quando eu desativar a GL_BLEND tudo funciona muito bem, mesmo no 1 º dispositivos gen eo FPS está de volta a 60 de novo ... por isso é deve ser o fato de que eu estou tentando belnd grandes texturas transparentes.

O problema é que eu não sei como fazê-lo de outra maneira ...

Eu deveria desenhar apenas a primeira nebulosa como uma textura opaca e depois tentar imitar a camada estrela médio e superior com pequenos pontos em movimento ao redor da tela?

Existe alguma outra abordagem sobre a questão de mistura? Como posso acelerar o processo de renderização? É uma grande textura (tileset) a resposta?

Por favor me ajude porque eu estou preso aqui e eu não posso sair.

Foi útil?

Solução

Eu não sei como você deseja que suas estrelas para olhar como, mas você pode querer tentar movê-los de uma textura à geometria usando GL_POINTS na DrawElements ou DrawArrays talvez apenas substituir o topo duas camadas com camadas de geometria . Você pode manipular os pontos usando PointSize, PointSizePointerOES e PointParameter para modificar o processamento dos pontos.

Outras dicas

Você pode querer usar multi-texturização para ver se que acelera-lo. Cada estágio multi-textura pode ser atribuído uma matriz de transformação única, então você deve ser capaz de traduzir cada camada em velocidades diferentes.

Eu acredito que todos os modelos de iPhone suportar dois estágios de textura, então você deve ser capaz de combinar duas das suas camadas em uma única chamada de desenho. Você ainda pode precisar de recorrer a mistura para a terceira camada.

Observe também que alpha testing poderia ser mais rápido do que alfa mistura .

Boa sorte!

A nebulosa de volta deve ser definitivamente opaca; tudo o resto está sendo desenhado em cima dela, e eu suponho que a única coisa por trás disso é preto. Além disso, prideout tem um ponto: assumindo suas camadas estrela pode ter efetivamente alfa 1-bit, isso é definitivamente algo que você pode tentar. Falhando isso, a técnica GL_POINTS Harald menciona iria funcionar tão bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top