2011-05-23 12 views
5

Android opengl-es ver pregunta. Entonces, en OpenGL, la posición predeterminada de la cámara y la vista está en 0,0. ¿Cómo se configura la vista y la cámara para que actúe básicamente igual que las coordenadas de la pantalla de la computadora con 0,0 en la parte superior? He llamado a gl.glOrthof (-screenWidth/2, ScreenWidth/2, -ScreenHeight/2, ScreenHeight/2). Pero creo que esto está mal. También necesito configurar la cámara para ver todo el campo. No estoy seguro de cómo usar gl.glFrustumf para realizar esta tarea.¿Coordenadas de OpenGL para coincidir con las coordenadas de la pantalla?

Respuesta

11

Para usar sus coordenadas de vértice como coordenadas de pantalla, simplemente use glOrtho(0, width, height, 0, -1, 1) en la matriz de proyección y mantenga su identidad de matriz de vista de modelo (que es la predeterminada). Tenga en cuenta que volqué hacia abajo y hacia arriba, ya que en GL (0,0) está en la parte inferior izquierda y lo quiere en la parte superior (pero tenga en cuenta que esto también invierte todos los objetos y por lo tanto el orden de triángulos). También olvidó configurar los planos cercano y lejano (no se mostrará todo lo que tenga una z fuera de este intervalo). Pero cuando ahora dibujas todos tus objetos con z = 0 (que es el valor predeterminado, cuando dibujas solo 2d vértices), todo debería estar bien.

glFrustum es solo una alternativa a glOrtho. Donde glOrtho construeve una vista ortográfica (paralela), glFrustum construye una vista en perspectiva. Entonces no necesita glFrustum.

+0

¿no debería ser glOrtho (0, ancho, 0, alto, -1, 1)? – darethas

+0

@ treehau5 No si leyó toda la respuesta, especialmente la oración justo después de la llamada 'glOrtho': *" Tenga en cuenta que volqué hacia abajo y arriba, ya que en GL (0,0) está en la parte inferior izquierda y la quiere en la parte superior"*. –

+0

Derecha. La principal preocupación es ahora, ¿por qué harías eso? – darethas

Cuestiones relacionadas