Dónde almacenar código de sombreado en la aplicación para Android

Estoy empezando con OpenGL ES2.0 en Android (5.0.1), nivel API 19. ¿Dónde debo almacenar el código de sombreado? El primer ejemplo codifica el sombreado directamente como una cadena.

Me gustaría tener el código de sombreado en un archivo separado para una mejor usabilidad. ¿Cuál es la mejor práctica para almacenar y cargar los sombreadores de vértices y fragmentos?

Hay dos opciones principales:

  • Guárdelos como archivos de texto en la carpeta de assets de su proyecto. Para cargar el sombreado:

    1. Obtenga AssetManager con el método getAssets() del contexto.
    2. Llame a open() en AssetManager , pasando el nombre de archivo del shader. Esto le da un InputStream .
    3. Lea el código de sombreado del InputStream y guárdelo en una String .
    4. Llame a close() en el InputStream .
  • Guárdelos en la carpeta res/raw de su proyecto. Para cargar el sombreado:

    1. Obtenga los Resources con el método getResources() del contexto.
    2. Llame a openRawResource() en los Resources , pasando el identificador de recurso ( R.raw.<name> ). Esto le da un InputStream .
    3. (lo mismo que arriba)
    4. (lo mismo que arriba)

No creo que haya una gran razón para preferir uno sobre el otro. La principal diferencia es que utiliza el nombre de archivo para acceder a los recursos, mientras utiliza el identificador de recursos asignado automáticamente para los recursos. Es una cuestión de preferencia que te gusta más.

  • Vertex Buffer Objects (VBO) no funciona en Android 2.3.3, con GLES20
  • Cómo crear una textura OpenGL de matriz de bytes en Android
  • LibGDX - Shader trabajando en el escritorio pero no en Android
  • GlCreateShader y glCreateProgram fallan en android
  • ¿Por qué mi programa de shader openGL para puntos tiene anillos de artefactos?
  • Proporciona una vista previa de la cámara en una textura con destino GL_TEXTURE_2D
  • Pasar atributos personalizados a un shader de fragmentos personalizado
  • Cómo renderizar la imagen de la cámara YUV-NV21 de Android en el fondo en libgdx con OpenGLES 2.0 en tiempo real?
  • ¿Cómo acceder a otro vértice en un programa de sombreado de vértices en opengl es 2?
  • Aplicando textura a Cubo, textura diferente en cada cara de cubo
  • Shader para Android OpenGL ES
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.