Estoy creando un juego usando el puerto del motor de gráficos irrlicht C++ 3D para la plataforma Android. El motor de gráficos está escrito en C++. Necesito poder cargar mallas y texturas, etc. desde código C++. Mi plan actual es colocar todos los archivos de activos del juego en el directorio res/raw o en el directorio assets, y al inicio copiar estos archivos en la tarjeta sd para que sean accesibles desde el código irrlicht C++. ¿Es esta la mejor manera de hacer que los archivos multimedia del juego sean accesibles desde C++?Android: Cómo hacer que los archivos de elementos del juego sean legibles desde código C++ usando ndk
Respuesta
Hay varias formas de hacerlo ... cada una tiene sus propias limitaciones, por lo que no puedo dar una buena recomendación sin saber más acerca de su situación. Aquí hay algunos enlaces a las discusiones con algunos consejos que pueden ayudarle a cabo:
http://groups.google.com/group/android-ndk/browse_thread/thread/842ca9d7d82995b0
que le puede dar sugerencias más específicas si supiera a) ¿Cuántos recursos que necesitaba para acceder b) El tamaño del recurso más grande que encontrará, más específicamente, son todos sus recursos < 1 MB de tamaño sin comprimir?
En teoría, puede pasar el InputStream al código nativo de C++ y hacer que invoque sus métodos. Incluso puedes implementar un istream encima de esos. Sin embargo, no creo que esto es lo que buscas.
Tenga en cuenta que los archivos de activos en el APK no se almacenan como, bueno, archivos. Están comprimidos y archivados: un APK es en realidad un archivo ZIP renombrado. Así que recomendaría copiar el activo en una carpeta de datos desde Java, y luego pasar el nombre de archivo de esa copia a C++.
Esto, por cierto, descarta por completo la escritura de esos activos.
- 1. ¿Cómo puedo hacer que los elementos HTML no sean resaltables?
- 2. Usando Android NDK y C++
- 3. Android NDK - usando AssetManager en el código nativo
- 4. Android NDK import-module/reuse de código
- 5. ¿Cómo hacer que los controladores Grails sean más DRY?
- 6. SIGILL en Android Código NDK
- 7. Usar C con Android ndk
- 8. asegurando que los archivos cargados sean seguros
- 9. Operaciones de archivos en Android NDK
- 10. ¿Cómo hacer que los miembros de struct sean privados?
- 11. Cómo usar archivos de encabezado precompilados en Android NDK
- 12. Validación Jquery: Cómo hacer que los campos sean rojos
- 13. ¿Cómo hacer que las propiedades sean privadas?
- 14. Usando Google Breakpad para Android NDK?
- 15. ¿Cómo puedo hacer que las propiedades de los archivos de propiedades sean obligatorias en Spring?
- 16. herramientas de depuración de memoria para Android NDK código C++
- 17. Cómo hacer que los GIF animados funcionen desde Android WebView
- 18. ¿Cómo puedo hacer que los enlaces sean blancos?
- 19. ¿Cómo hacer que los parámetros sean obligatorios en PowerShell?
- 20. Compatibilidad con Android NDK C++ 'wstring'
- 21. Android - escribir/guardar archivos desde código nativo solo
- 22. Pasar una cadena al código C en Android NDK
- 23. Android NDK #define Problemas
- 24. ¿Cómo contar todos los archivos legibles en Bash?
- 25. Android NDK incremental build
- 26. Uso de STL con Android NDK C++
- 27. ¿Cómo hacer que mis aplicaciones sean "personalizables"?
- 28. Cómo hacer que se llame al código C (P/invocar) desde C# "Thread-safe"
- 29. ¿Existe alguna forma preferida de formatear las cadenas jQuery para que sean más legibles?
- 30. eliminando archivos del código C
Esos son buenos hilos que no encontré antes. Aquí hay otro que encontré útil http://thedevelopersinfo.com/2010/01/13/working-with-sdcards-filesystem-in-android/ El juego aún no está bien definido, pero aquí hay algunos appoximations de archivos lo haré necesita acceder desde C++ aproximadamente 8 mallas de aproximadamente 400k tamaño (3.2MB) aproximadamente 8 texturas de aproximadamente 50k tamaño (0.4MB) aproximadamente 20 texturas de aproximadamente 20k tamaño (0.4MB) 1 textura de 193K (0.193MB) Total aproximado 4.2MB También un video 249K y algunos efectos de sonido 306K pero estarán en la carpeta res/raw y reproducidos en el reproductor multimedia android – slytron
Bien, la razón por la que pregunto es que parece que hay un tamaño de archivo descomprimido de 1MB limite PER PEROURCE y también parece haber un recuento máximo de recursos de 512. Ya que parece que no está En ambos casos, puede poner todos sus recursos en la carpeta "/ assets" y luego acceder a ellos utilizando la clase AssetManager. Si su APK tiene zipaligned, el AssetManager corregirá los archivos por usted, lo que supondrá una gran mejora de velocidad. – cjserio
gracias. Creo que tengo lo que necesito hacer. – slytron