Pregunta

Tengo un juego OpenGL ES que estoy pirateando juntos.Una parte implica mirar un área grande "similar a un mapa" y luego tocar dos veces en una parte para "acercarla".¿Cómo usaría OpenGL ES para proporcionar este efecto (dado que es posible que sea necesario ampliar diferentes partes del mapa)?

He oído hablar de glScale y glOrtho, pero no tengo claro cómo funcionan realmente, ya que todo el mundo openGL es muy nuevo para mí.

¿Fue útil?

Solución

El zoom 2-D que usted describe podría lograrse mejor utilizando Core Animation.NSView (y su contraparte de iPhone con NDA) proporcionan animación implícita cuando cambia su marco.Todo lo que necesitaría hacer en este caso sería establecer origin.x y origin.y y size.width y size.height del marco en dichos valores para que la vista sea más grande que la pantalla.Si hiciera esto y lo envolviera en las llamadas apropiadas para iniciar y confirmar una animación, obtendría una animación de zoom de forma gratuita.Core Animation utiliza OpenGL detrás de escena para sus animaciones.

Sin embargo, si cree que tiene que hacer esto en OpenGL, ¿puedo sugerirle un pequeño artículo que hice en http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es?soy el autor de Moléculas, un visualizador molecular 3-D gratuito para iPhone, y no sabía nada sobre OpenGL ES antes de comenzar ese proyecto.Tres semanas después, estaba en la App Store cuando se lanzó.

Las llamadas OpenGL son bastante simples, son las matemáticas que las rodean las que pueden causarte dolores de cabeza.Acercar los objetos es bastante simple y se puede hacer moviendo la cámara o escalando físicamente los objetos.Para Molecules, seguí la ruta de escalar el objeto usando la función glScalef(x,y,z), donde x, y,z son los factores de escala que deseas aplicar a tu objeto modelo.Hago mi escalamiento incrementalmente.Es decir, no restablezco la matriz de transformación al inicio de cada fotograma renderizado (usando glLoadIdentity()), sino que simplemente la escala un poco según la entrada del usuario.Si el usuario separa los dedos un 5%, aumento la escala un 5%.

Nuevamente, sugeriría Core Animation para el zoom 2-D que usted describe, pero no es demasiado difícil lograr los mismos resultados en OpenGL ES.

Otros consejos

Respetuosamente, la respuesta es tomarse unos días para aprender los conceptos básicos de OpenGL, y hay lugares mucho mejores para eso en la red que aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top