一种基于多线程的OpenGL快速绘制方法技术

技术编号:14469915 阅读:544 留言:0更新日期:2017-01-21 01:42
本发明专利技术公开了一种基于多线程的OpenGL快速绘制方法,首先生成一张与输出目标尺寸相同的位图,将位图按照区域进行分块;然后启用多线程并发,每一线程负责对位图的一个分块进行逐像素点计算与绘制;待位图绘制完成后,将位图整体渲染到FBO;最后将FBO输出到屏幕。本发明专利技术将资源绘制过程中引入多线程技术,将资源先输出到一张内存中保存的位图,应用处理器的并行运算能力,充分利用系统资源,然后利用帧缓冲区,有效减少了窗口绘制时间,从而整体上提高资源渲染绘制速度。

【技术实现步骤摘要】

本专利技术涉及一种利用多线程快速渲染绘制图像的方法,具体地说是一种基于多线程的OpenGL快速绘制方法。
技术介绍
OpenGL为程序开发人员提供了一个图形硬件接口,是一个功能强大,调用方便的底层图形函数库。然而,当渲染绘制目标复杂,顶点数量较多时,直接利用OpenGL在桌面窗口渲染绘制,输出速度缓慢,一直是制约程序显示效果的重要因素。EXT_framebuffer_object是OpenGL的一个扩展,允许把一个离屏缓冲区作为程序渲染运算的目标。使用FBO(FrameBufferObject)这一技术,把图像先渲染到FBO帧缓冲区块,保存在显卡内存中,然后图像数据可以快速地在显示器上显示出来,从而实现资源的快速绘制显示。其中,将资源渲染到FBO的渲染上下文只能在单一线程中完成,多个线程无法同时MakeCurrent到同一个绘制上下文。现有技术中,从目标资源的计算到渲染绘制,全程使用单一线程,限制了资源绘制的效率。
技术实现思路
为了解决上述问题,本专利技术的目的是提供一种基于多线程的OpenGL快速绘制方法,该方法利用多核处理器的性能优势,将资源绘制过程中引入多线程技术,将资源先输出到一张内存中保存的位图,这一过程应用处理器的并行运算能力,充分利用系统资源,然后利用帧缓冲区,有效减少了窗口绘制时间,从而整体上提高资源渲染绘制速度。本专利技术的目的通过以下技术方案实现:一种基于多线程的OpenGL快速绘制方法,其特征在于该方法步骤如下:1)首先生成一张与输出目标尺寸相同的位图,将位图按照区域进行分块;2)然后启用多线程并发,每一线程负责对位图的一个分块进行逐像素点计算与绘制;待位图绘制完成后,将位图整体渲染到FBO;3)最后将FBO输出到屏幕。本专利技术中,创建位图:主线程根据渲染绘制目标尺寸,在内存区域生成一块位图;区域划分:将上一步骤生成的位图,划分成若干区域,将相关信息传递给对应的子线程。分块绘图:每一个子线程接收主线程发送的区域信息,根据采样点,利用插值计算等技术,逐像素点计算图像信息;主线程创建一个FBO,在主线程内,将位图渲染到FBO的指定位置。本专利技术将资源先输出到一张内存中保存的位图,这一过程应用处理器的并行运算能力,充分利用系统资源,然后利用帧缓冲区,有效减少了窗口绘制时间,从而整体上提高资源渲染绘制速度。附图说明图1是本专利技术中主线程工作流程图。图2是本专利技术中子线程工作流程图。图3是本专利技术中主线程与子线程消息传递图。具体实施方式下面结合附图和具体实施,对本专利技术的处理流程进一步详细阐述一种基于多线程的OpenGL快速绘制方法,步骤如下:步骤1:创建位图。主线程根据渲染绘制目标尺寸,在内存区域生成一块位图。步骤2:区域划分。将上一步骤生成的位图,划分成若干区域,将相关信息传递给对应的子线程。步骤3:分块绘图。每一个子线程接收主线程发送的区域信息,根据采样点,利用插值计算等技术,逐像素点计算图像信息。步骤4:主线程创建一个FBO。步骤5:在主线程内,将位图渲染到FBO的指定位置。步骤6:屏幕绘制。将绘制好的FBO直接在屏幕输出。本文档来自技高网...

【技术保护点】
一种基于多线程的OpenGL快速绘制方法,其特征在于该方法步骤如下:1)首先生成一张与输出目标尺寸相同的位图,将位图按照区域进行分块;2)然后启用多线程并发,每一线程负责对位图的一个分块进行逐像素点计算与绘制;待位图绘制完成后,将位图整体渲染到FBO;3)最后将FBO输出到屏幕。

【技术特征摘要】
1.一种基于多线程的OpenGL快速绘制方法,其特征在于该方法步骤如下:1)首先生成一张与输出目标尺寸相同的位图,将位图按照区域进行分块;2)然后启用多线程并发,每一线程负责对位图的一个分块进行逐像素点计算与绘制;待位图绘制完成后,将位图整体渲染到FBO;3)最后将FBO输出到屏幕。2.根据权利要求1所述的基于多线程的OpenGL快速绘制方法,其特征在于:步骤1)中,创建位图:...

【专利技术属性】
技术研发人员:胡军曹震许斌锋
申请(专利权)人:江苏电力信息技术有限公司国网江苏省电力公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1