Programação com OpenGL/Android GLUT Wrapper: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Linha 158:
 
== Recursos e Ativador ==
 
Os aplicativos do Android normalmente extraem os recursos ( como shaders or meshes ) de uma arquivo .apk ( um tipo de arquivo Zip).
* Os recursos estão localizados na sub-pasta res/ (ex. res/layout); Existem funções do Android que carregam eles dependendo do seu tipo.
* Os ativadores estão localizados na pasta assets/ e são acessadas por meio de uma estrutura de diretório mais tradicional.
 
Isto não é comum em aplicativos GLUT, assim vamos fazer os recursos ficarem disponíveis com mais facilidade:
* Usando um wrapper(montador) com fopen/open.
** Carregando com LD_PRELOAD, como em [http://www.zlibc.linux.lu/ zlibc]
* Usando o kernel ptrace hooks
* Redefinindo o fopen do seu arquivo .cpp
* Extraindo os arquivos antecipadamente
 
A implementação de um montador(wrapper) é tedioso, porque seu aplicativo o chamara por meio da JNI. Isto significa que não podemos apenas fazer um <code>execv</code> de outro aplicativo depois de ajustar o LD_PRELOAD, em vez disto precisamos iniciar um processo filho, antes de todos os eventos do Android, e ajustar um IPC para compartilhar a estrutura de dados do <code>android_app</code> e do <code>ALooper</code>, o ptrace também requer um processo filho.
 
Redefinindo o fopen localmente podemos trabalhar com a função do C <code>fopen</code>, mas não com a do C++ <code>cout</code>
 
Pré-extraindo todos os ativadores adicionais exigem um espaço em disco para gravar os arquivos, mas é apenas uma solução razoável.
 
== Referencia ==