预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共16页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利(10)授权公告号CN105069831B(45)授权公告日2018.05.29(21)申请号201510451494.XCN103336816A,2013.10.02,(22)申请日2015.07.28CN103413343A,2013.11.27,CN104035768A,2014.09.10,(65)同一申请的已公布的文献号CN104038807A,2014.09.10,申请公布号CN105069831ACN104142807A,2014.11.12,(43)申请公布日2015.11.18JP2013041500A,2013.02.28,(73)专利权人广州爱拍网络科技有限公司US2015116310A1,2015.04.30,地址510665广东省广州市天河区建中路李洪辉,刘志勤.GPU在Android显示系统中59号柏朗奴大厦2楼的应用与研究.《计算机工程与设计》.2013,第34卷(第12期),(72)发明人邹光先彭召龙李新,李珊珊.3ds模型在OpenGL中的读取(74)专利代理机构广州三环专利商标代理有限和重绘.《首都师范大学学报(自然科学版)》公司44202.2008,第29卷(第2期),代理人颜希文杨乾.三维Obj模型在android中的载人与渲(51)Int.Cl.染.《电脑知识与技术》.2012,第8卷(第16期),G06T15/00(2011.01)审查员袁玉(56)对比文件CN102681853A,2012.09.19,权利要求书2页说明书6页附图7页(54)发明名称一种基于Hook技术获取OpenGL渲染画面的方法和系统(57)摘要一种基于Hook技术实现安卓应用获取OpenGL渲染画面的方法和系统,通过Hook技术用自定义的my_eglSwapBuffers函数接管OpenGL应用程序的eglSwapBuffers函数调用,通过创建自定义的帧缓存对象去替换OpenGL当前的帧缓存对象,当OpenGL执行渲染操作时,渲染结果会输出到自定义的帧缓存对象中,然后从自定义的帧缓存对象关联的Texture中把OpenGL渲染画面读取出来。该方法还通过Hook技术用自定义函数接管了各函数调用,使得在取图过程中,应用程序期望绑定或修改默认帧缓存对象时绑定或修改自定义帧缓存对象。CN105069831BCN105069831B权利要求书1/2页1.一种基于Hook技术的获取OpenGL渲染画面的方法,适用于安卓系统中,其特征在于,包括如下步骤:执行Hook操作,用自定义函数接管应用程序的OpenGL函数,包括:用自定义my_eglSwapBuffers函数接管eglSwapBuffers函数调用;用自定义my_glBindFramebuffer函数接管glBindFramebuffer函数调用;用自定义my_glFramebufferRenderbuffer函数接管glFramebufferRenderbuffer函数调用;用自定义my_glFramebufferTexture2D函数接管glFramebufferTexture2D函数调用;用自定义my_glGetIntegerv函数接管glGetIntegerv函数调用;创建自定义帧缓存对象,该对象用于替换OpenGL当前的帧缓存对象,以便OpenGL把画面渲染到该帧缓存对象中;执行my_glBindFramebuffer函数时,如果期望绑定到默认帧缓存对象,实际会绑定到自定义帧缓存对象;创建自定义Texture,该Texture用于关联到自定义帧缓存对象的颜色缓冲区,以便能存储渲染到自定义帧缓存对象的画面;创建自定义的RenderBuffer,用该RenderBuffer对象关联自定义帧缓存对象的深度缓冲区和模板缓冲区;执行my_eglSwapBuffers,在my_eglSwapBuffers函数中处理取图逻辑,包括:保存和恢复OpenGLContext的状态或帧缓存对象、绑定自定义帧缓存对象到OpenGLContext中、重渲染自定义帧缓存对象关联的Texture到默认的帧缓存对象、以及从自定义帧缓存对象关联的Texture中读取画面数据。2.如权利要求1所述的一种基于Hook技术的获取OpenGL渲染画面的方法,其特征在于,在my_eglSwapBuffers函数中执行获取渲染画面的逻辑,包括以下步骤:步骤1、判断自定义的帧缓存对象是否已经绑定到OpenGLContext中,如果已经绑定执行步骤2,否则执行步骤5;步骤2、恢复已经保存的OpenGLContext状态和帧缓存对象;步骤3、重渲染自定义帧缓存对象关联的Texture到默认帧缓存对象;步骤4、从自定义Texture中读取图像数据;步骤5、