Android VLC - GL Init
gl.c:open() => sys->gl = vlc_gl_Create (sys->window, API, "$" MODULE_VARNAME);
以 MODULE_VARNAME = gles2 为例。
opengl.c:vlc_gl_Create() =>
gl = vlc_custom_create(parent, sizeof (*gl), "gl");
gl->surface = wnd;
gl->module = module_need(gl, type, name, true);
// type = "opengl es2", name = "gles2"
modules.c:module_need() =>
vlc_module_load(obj, cap, name, strict, generic_start, obj);
modules.c:vlc_module_load() =>
module_load (obj, cand, probe, args); // probe = generic_start
modules.c:module_load() =>
init (m->pf_activate, ap);
// init = probe = generic_start
// m->pf_activate = OpenGLES2
modules.c:generic_start() =>
vlc_object_t *obj = va_arg(ap, vlc_object_t *);
int (*activate)(vlc_object_t *) = func;
return activate(obj);
egl.c:OpenGLES2() =>
static const struct gl_api api = {
"OpenGL_ES", EGL_OPENGL_ES_API, 3, EGL_OPENGL_ES2_BIT,
{ EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE },
};
return Open (obj, &api);
egl.c:open() => Init egl etc
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- nryq.cn 版权所有 赣ICP备2024042798号-6
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务