Coordenadas de textura en opengl android mostrando la imagen invertida
Escribí el código del androide de opengl para demostrar un mapa de bits en un cuadrado. Pero el mapa de bits se dibujó en sentido inverso. Cuando cambio la combinación de la matriz de la textura al código comentado se dibuja correctamente. Pero insisto en que mi matriz de textura debe ser como a continuación. ¿Estoy pensando mal?
/** The initial vertex definition */ private float vertices[] = { -1.0f, 1.0f, 0.0f, //Top Left -1.0f, -1.0f, 0.0f, //Bottom Left 1.0f, -1.0f, 0.0f, //Bottom Right 1.0f, 1.0f, 0.0f //Top Right }; /** Our texture pointer */ private int[] textures = new int[1]; /** The initial texture coordinates (u, v) */ private float texture[] = { //Mapping coordinates for the vertices // 1.0f, 0.0f, // 1.0f, 1.0f, // 0.0f, 1.0f, // 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, }; /** The initial indices definition */ private byte indices[] = { //2 triangles 0,1,2, 2,3,0, };
- ¿Hacer una animación a pantalla completa en Android? ¿Debo usar OPENGL?
- ¿Por qué mi rendimiento aumenta al tocar la pantalla?
- Java.lang.RuntimeException: eglSwapBuffers falló: EGL_SUCCESS
- Open GL ES en Android: cómo usar gluUnProject?
- Cómo dibujar líneas de cuadrícula en OpenGL ES Android?
- Android OpenGL ES GL10 o GL11
- Problema con la vista previa de la cámara Android de OpenGL
- Cómo utilizar la biblioteca Assimp en Android NDK
- Android: ¿Es posible crear una SurfaceTexture sin SurfaceView?
- Render-a-textura y sincronización
- Llamar a Google Play Services GoogleApiClient.connect () de Activity onStart () provoca un bloqueo intermitente de OpenGL (errores de NvRmChannelSubmit, etc.)
- Mejor manera de separar la lógica del juego de la representación de un juego de ritmo rápido para Android con OpenGL?
- Cómo detectar el clic en un objeto en OpenGL ES en la aplicación de Android?
Considerando que Android utiliza la esquina superior izquierda como 0,0 del sistema de coordenadas, OpenGL utiliza la esquina inferior izquierda es 0,0, que es la razón por la que su textura se voltea.
Una solución común a esto es voltear su textura en el tiempo de carga,
Matrix flip = new Matrix(); flip.postScale(1f, -1f); Bitmap bmp = Bitmap.createBitmap(resource, 0, 0, resource.getWidth(), resource.getHeight(), flip, true);
En realidad, creo que la solución de Will Kru debería haber girado el fondo alrededor de los dos ejes
flip.postScale(-1f, -1f);
¡Esta solución funcionó para mí!
Esto funcionó para mí. (No es necesario crear otro mapa de bits y escala)
private float vertices[] = { 1.0f, -1.0f, 0.0f, //Bottom Right 1.0f, 1.0f, 0.0f, //Top Right -1.0f, 1.0f, 0.0f, //Top Left -1.0f, -1.0f, 0.0f, //Bottom Left };
- Cualquier API en android para normalizar el número de teléfono
- ¿Qué es Android y por qué crearon una nueva VM?