Cómo crear una textura OpenGL de matriz de bytes en Android
Soy nuevo en OpenGL todos juntos. Estoy haciendo una aplicación de color ciego en Android con fines académicos. Tengo todo el código necesario en el shader para hacer las manipulaciones que necesito, pero todavía tengo que obtener el shader para poder ver los datos que creo en mi código Java. En mi código Java, terminé con una gran matriz int de tamaño 262144. Traté de pasar esta matriz en el shader de cualquier manera que pude, pero era demasiado grande. He sido informado de que puedo pasar esta gran cantidad de información fácilmente en el sombreado si convierto mis datos en una textura.
He convertido mi matriz de int en una matriz de bytes según instrucciones de un colega, pero ahora estoy perdido en cuanto a cómo crear la textura opengl e introducir mis datos de byte en él para que el sombreador vea y use.
- Cargando texturas grandes en AndEngine
- Compartir el contexto GLES20 y texturas entre GLSurfaceViews diferentes?
- Tamaño de textura mínimo requerido para el cumplimiento con OpenGL-ES 2.0 en Android?
- ¿Cómo puedo encontrar el tamaño máximo de textura para diferentes teléfonos?
- ¿Cómo escalar sprites en libgdx según las resoluciones de pantalla?
Por lo tanto, tengo que crear una textura opengl, llenarlo con mis datos (es la matriz de bytes mejor?) Y, a continuación, ser capaz de utilizar esa textura en mi shader. Si alguien me puede ayudar, sería muy apreciado. Trabajo bien después de ver ejemplos, no explicaciones porque soy muy opengl analfabeto pero acojo cualquier ayuda.
Traté de codificar algunos. Terminé tratando de hacer un GLES20.glTexImage2D. Pensé que podría pasar en mi matriz de bytes, pero se necesita un búfer ?? Por favor, dame todos los pasos necesarios para completar mi tarea.
¡Muchas gracias!
Micro
- Android OpenGL - ES Sangrado de textura
- Compresión de textura de Android OpenGL
- Cargando texturas en una aplicación de Android OpenGL ES
- Combinación Android de OpenGL de SurfaceTexture (imagen externa) y textura ordinaria
- Perder las texturas de OpenGL en Android después de un currículum
- Texturas que sólo se muestran en algunos dispositivos
- Rendimiento lento de glTexSubImage2D en Nexus 10 / Android 4.2.2 (Samsung Exynos 5 con Mali-T604)
- Consejos para mejorar la tasa de llenado de OpenGL ES en Android
Creo que necesitas hacer lo siguiente;
byte data[4 * 262144]; // your byte array, 4 * int count ByteBuffer buffer = ByteBuffer.allocateDirect(4 * 262144); buffer.put(data); buffer.position(0); GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer);
- Solicitud de varias partes utilizando Retrofit 1.8.0 no funciona
- Adición de una imagen grande a un cajón de navegación (SlidingMenu libs) – ¿Cómo?