Android OpenGL ES 分析与实践(4)

来源:互联网 发布:有人gprs模块与单片机 编辑:程序博客网 时间:2024/06/05 09:37
【转】Android OpenGL ES 分析与实践(4) - huangchangzhuan - 我的博客

 


由我以上图表可以看出,加载驱动的时候,会尝试先从libGLES_android.so中加载EGLGLESV1_CMGLESV2三个部分的函数,如

 

果加载失败,则会尝试从libEGL_android.solibGLESV1_cm.solibGLESV2.so三个动态库中对应的函数。在这部分代码中,我们可以看到一个非常重要的结构体,egl_connection_t

struct egl_connection_t

{

    void *              dso;

    gl_hooks_t *        hooks[2];

    EGLint              major;

    EGLint              minor;

    egl_t               egl;

};到处都有他的身影,对这几个变量进行一下解释。

 

 

struct soinfo

{

    const char name[SOINFO_NAME_LEN];

    Elf32_Phdr *phdr;

    int phnum;

    unsigned entry;

    unsigned base;

    unsigned size;

    // buddy-allocator index, negative for prelinked libraries

    int ba_index;

 

    unsigned *dynamic;

 

    unsigned wrprotect_start;

    unsigned wrprotect_end;

 

    soinfo *next;

    unsigned flags;

 

    const char *strtab;

    Elf32_Sym *symtab;

 

    unsigned nbucket;

    unsigned nchain;

    unsigned *bucket;

    unsigned *chain;

 

    unsigned *plt_got;

 

    Elf32_Rel *plt_rel;

    unsigned plt_rel_count;

 

    Elf32_Rel *rel;

    unsigned rel_count;

 

    unsigned *preinit_array;

    unsigned preinit_array_count;

 

    unsigned *init_array;

    unsigned init_array_count;

    unsigned *fini_array;

    unsigned fini_array_count;

 

    void (*init_func)(void);

    void (*fini_func)(void);

 

#ifdef ANDROID_ARM_LINKER

    /* ARM EABI section used for stack unwinding. */

    unsigned *ARM_exidx;

    unsigned ARM_exidx_count;

#endif

 

    unsigned refcount;

    struct link_map linkmap;

};


原创粉丝点击