Pergunta

Eu estou fazendo um simples jogo 2D para o iPhone. É baseado em CrashLanding. por isso é basicamente uma textura de fundo e algumas texturas retangulares móveis ao redor.

Eu tenho essa bizarra problema pequenos gráficos: alguns dos pequenos itens 2d (pode assumir apenas retângulos) movendo-se obter esta pequena barra preta piscando em cima deles (a textura do fundo é quase completamente branco para que o bar é pouco perceptível) .

As texturas que estou usando são pequenas (~ 1Kb) pngs.

Tem mais alguém correr para isso? É este um problema de openGL comum?

BTW isso acontece tanto no simulador e no dispositivo real.

Foi útil?

Solução

Você tem uma coisa como aquela pequena barra preta em suas texturas?

Eu encontrei problemas semelhantes quando eu tiver feito algo errado. Aqui está uma pequena lista de verificação:

  • Você tem mipmapped sua textura ou não, e verificar quais os parâmetros que ele tem.
  • glTexParameters. (WRAP_S, WRAP_T, MAG_FILTER, MIN_FILTER ...)
  • dimensões de textura. (Se há não-poder-de-dois -textures permitido, pode causar falhas gráficas, dependendo de como você carregar suas texturas)
  • Você está desenhando que piscar bar no topo de suas retângulos?
  • Se há algo que está causando a barra preta, na sua textura.
  • Alinhamento dos quadros de animação.
  • Mistura e alfa-mistura.

Se alguma coisa na lista é vaga para você, é um bom exercício para ler sobre eles.

Eu também fazer um bom palpite: Eu acredito que você não está enrolando suas texturas em qualquer direção, e que os quadros de animação são um pouco desalinhado, de modo que a sua aplicação tem um pouco errado coordenadas de textura / altura no quad você desenho.

Espero que meus conselhos fazem sentido. Eu só tenho experiência com o OpenGL de costume, não o OpenGL ES que é gráficos pipelines foram podadas para torná-lo mais compacto, mais limpo e mais elegante.

Outras dicas

Uma vez que este é um jogo 2D, são esses pequenos sprites retangulares contido dentro da mesma folha de textura? Outra possível culpado poderia ser textura filtragem.

Se você está tentando manipular coordenadas de textura para desenhar uma sub-região de sua textura, você pode verificar se você está desenhando o sprite em um maior do que a proporção 1: 1. Se você tem filtragem de texturas linear habilitado (em oposição a mais próxima), OpenGL pode pegar alguns pixels do sprite adjacente se você tentar escalar o sprite além 1: 1.

Se este for o caso, você pode tentar colocar um tampão 1 pixel em sua folha de textura entre sprites.

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