Pergunta

Eu tenho um jogo OpenGL ES que estou cortando juntos. Uma parte dela envolve olhar para uma grande "mapa-like" área e, em seguida, tocando em uma parte de "zoom em"-lo. Como você usaria OpenGL ES para proporcionar este efeito (uma vez que ele pode precisar de aumentar o zoom em diferentes partes do mapa).

Já ouvi falar de glScale e glOrtho, mas estou incerto sobre como eles realmente funcionam desde que o mundo openGL todo é muito novo para mim.

Foi útil?

Solução

A 2-D zoom você descreve pode ser melhor alcançado usando Core Animation. NSView (e sua contraparte iPhone NDA'd) fornecer animação implícito quando você mudar o seu quadro. Tudo o que você precisa fazer, neste caso, seria a criação origin.x do quadro e origin.y e size.width e size.height a tais valores para fazer a visão maior que a tela. Se você fez isso e envolveu-o nas chamadas apropriadas para iniciar e cometer uma animação, você terá uma animação zoom gratuitamente. Core Animation usa OpenGL nos bastidores para suas animações.

Se, no entanto, você sente que você tem que fazer isso em OpenGL, posso sugerir um pouco writeup eu fiz em http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es ? Eu sou o autor da Moléculas , um visualizador molecular 3-D livre para o iPhone, e eu sabia nada sobre OpenGL ES antes que eu comecei esse projeto. 3 semanas mais tarde, foi na App Store, uma vez que lançou.

chamadas OpenGL são bastante simples, é a matemática em torno deles que pode lhe dar dores de cabeça. Zoom em objetos é realmente muito simples, e pode ser feito tanto pelo movimento da câmera ou por objetos fisicamente escala. Para moléculas, eu fui a rota de escalar o objeto usando o glScalef (x, y, z) função, onde x, y, e z são os fatores de escala que deseja aplicar ao seu objeto de modelo. Eu faço o meu escala incremental. Ou seja, eu não redefinir a matriz de transformação no início de cada quadro renderizado (usando glLoadIdentity ()), mas apenas escalá-lo um pouco com base na entrada do usuário. Se o usuário move seus dedos separados em 5%, eu aumentar a escala em 5%.

Mais uma vez, eu sugiro Core Animation para o 2-D zoom que você descreve, mas não é muito difícil de alcançar os mesmos resultados em OpenGL ES.

Outras dicas

Respeitosamente, a resposta é tomar alguns dias para aprender as noções básicas de OpenGL, e há lugares muito melhores para que na rede do que aqui.

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