一种图形渲染中光栅化阶段的多线程实现方法

文档序号:6423657阅读:388来源:国知局
专利名称:一种图形渲染中光栅化阶段的多线程实现方法
技术领域
本发明涉及电视节目制作领域中的字幕处理领域,尤其涉及一种图形渲染中光栅化阶段的多线程实现方法。
背景技术
随着计算机图形、图像、视频技术的不断发展,加上国内广电行业正处于从标准清晰度模式向高清晰度模式过渡的时期,电视台等电视制播单位对电视图文制播提出了更 高、更新的要求。这就对视频制作过程中的每一个环节都需要适时的技术更新。图形渲染中的光栅化阶段是字幕制作领域的一个非常重要的环节。现有技术中三维场景的渲染主要是基于GPU (Graphic Processing Unit,图形处理器)的。基于GPU的渲染并行性,可以实现高效率的渲染。但是现有的GPU渲染还是需要依赖显卡,CPU本身运算能力很大,但是因传统的CPU运算是串行运算,运用的运算单元仅仅用到了其中很小的一部分,这就早成了很大的资源浪费,运算效率也比较低。发明人在实施本发明的过程中,发现现有技术存在以下技术问题(I)在CPU实现三维渲染时,在光栅化阶段效率很低(2)多个CPU未能充分利用

发明内容
为了解决上述现有技术的缺点,本发明的主要目的是提供一种图形渲染中光栅化三角片填充的多线程实现方法,以提高图形渲染的光栅化速度。为了达到上述目的,本发明提供了一种图形渲染中光栅化三角片填充的多线程实现方法,具体包括计算三维物体的包围盒,将所述包围盒划分成η个子区域并对应η个线程;划分三角片到对应的η个子区域内;执行与CPU个数相当的线程进行对应所述子区域内的三角片填充;继续执行线程直到将所有η个线程全部执行完毕,完成整个三角片的填充。本发明的实施方式先计算三维物体的包围盒划分为η个线程的,通过先执行与CPU个数相当的线程进行对应子区域内的三角片填充,并且循环执行线程,同时执行多个线程直到将η个线程全部执行完毕完成整个三角片的填充的方式,能够大大提高图形渲染中光栅化三角片的填充,而在CPU上也能实现高效率的并行性。


为了更清楚的说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图I为本发明实施例一种图形渲染中光栅化阶段的多线程实现方法的流程图
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然所描述的实施例仅是本发明的一部分实施例,不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例一方面提供了一种图形渲染中光栅化三角片填充的多线程实现方法,如图2所示为本发明实施例的具体实现方法,阐述如下步骤SI :计算三维物体在屏幕空间中的包围盒。依次计算三维物体在物体空间中的包围盒的八个顶点在屏幕空间中的坐标,然后根据所述八个顶点在屏幕空间中的坐标计算屏幕空间中的三维物体的包围盒,屏幕空间中的包围盒,只有X,Y方向的边界。步骤S2 :将上述计算出的三维物体的包围盒划分成η个区域并对应η个线程,线 程的个数根据CPU的个数来选择,一般选择相当于CPU个数几倍的值(推荐4 8倍),选小了,不能充分利用资源,大了,区域划分更细,计算过程有一些额外的开销。比如4个CPU的机器,η可以选为32。步骤S3 :根据构成三维物体的三角片三个顶点的屏幕坐标的位置,将三角片划分到上述相应的η个子区域内,并在区域内记录划分到本区域内的三角片,如果一个三角片跨多个区域,则在多个区域记录这个三角片。所述划分三角片到划分的区域的子区域内主要依据三角片在屏幕坐标中的三条边在Y方向的值,看落在哪几个区域内就将其划分到该区域内。步骤S4 :执行与CPU个数相当的线程进行对应所述子区域内的三角片填充。执行三角片填充的时候需要先执行与CPU个数相当的线程即对每个线程相对应的子区域进行填充。步骤S5 :继续执行线程直到将所有η个线程全部执行完毕,完成整个三角片的填充。当所述与CPU个数相当的线程中某一个线程执行完毕后紧接着执行剩下未执行的线程中的一个线程,直到所有的η个线程全部执行完毕,完成整个物体的三角片的填充。其中,当一个三角片跨多个区域时,线程运行时,只填充三角片在对应的一个区域内的像素,无需在每个区域内都对整个三角片进行填充,避免三角片的重复填充,能大大提高填充效率。本发明实施例图形渲染中光栅化三角片填充的多线程实现方法,计算屏幕空间中三维物体的包围盒并划分区域及与区域对应的线程;先执行与CPU个数相当的线程进行对应子区域内的三角片填充;并且当所述与CPU个数相当的线程中某一个线程执行完毕后紧接着执行一个剩下未执行的线程,同时执行与CPU个数相当的线程直到将全部线程执行完毕完成整个三角片的填充;尤其当一个三角片跨多个扫描区域时,线程运行时只需要将本区域内的三角片进行像素填充,避免了一个三角片重复填充,大大提高了图形渲染中光栅化三角片的填充速度,多线程的方法在CPU上实现了三维渲染光栅化阶段的并行性。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述 ,仅为本发明的一个最佳具体实施例,但本发明的特征并不局限于此,任何熟悉该项技术的人在本发明领域内,可轻易想到的变化或修饰,都应涵盖在以下本发明的申请专利范围中。
权利要求
1.一种图形渲染中光栅化阶段的多线程实现方法,其特征在于,包括 计算三维物体平面空间中的包围盒,将所述包围盒划分成η个子区域并对应η个线程; 划分三角片到对应的η个子区域; 执行与CPU个数相当的线程进行对应所述子区域内的三角片填充; 继续执行其它线程直到将所有η个线程全部执行完毕,完成整个三角片的填充。
2.如权利要求I所述的图形渲染中光栅化阶段的多线程实现方法,其特征在于,所述计算三维物体屏幕空间中的包围盒的方法具体为依次计算三维物体在物体空间中的包围盒的八个顶点在屏幕空间中的坐标,然后根据所述八个顶点在屏幕空间中的坐标计算屏幕空间中的三维物体的包围盒。
3.如权利要求I所述的图形渲染中光栅化阶段的多线程实现方法,其特征在于,线程的个数取CPU个数的整倍数。
4.如权利要求I所述的图形渲染中光栅化阶段的多线程实现方法,其特征在于,所述划分三角片到对应的η个子区域即子区域记录划分到本区域内的三角片。
5.如权利要求4所述的图形渲染中光栅化阶段的多线程实现方法,其特征在于,所述子区域记录划分到本区域内的三角片还包括如果一个三角片跨多个区域,则在多个区域记录这个三角片。
6.如权利要求4所述的图形渲染中光栅化阶段的多线程实现方法,其特征在于,划分三角片到对应的子区域内依据三角片在屏幕坐标中的三条边在Y方向的值。
7.如权利要求I所述的图形渲染中光栅化阶段的多线程实现方法,其特征在于,所述继续执行线程具体为当所述与CPU个数相当的线程中某一个线程执行完毕后紧接着执行剩下未执行的线程中的一个线程。
8.如权利要求I所述的图形渲染中光栅化阶段的多线程实现方法,其特征在于,所述三角片填充还包括当一个三角片跨多个区域时,线程运行时,只填充三角片在对应的一个区域内的像素。
全文摘要
本发明公开了一种图形渲染中光栅化阶段的多线程实现方法,包括计算三维物体的包围盒,将所述包围盒划分成n个区域并对应n个线程;划分三角片到对应的所述划分的n个区域的子区域内;执行与CPU个数相当的线程进行对应所述子区域内的三角片填充;继续执行其它线程直到将所有n个线程全部执行完毕,完成整个三角片的填充。通过本发明实施例可以大大提高图形渲染中三角片填充的速度,并且使图像渲染方法不再依赖GPU操作,可以直接基于CPU进行图形渲染,多线程的方法在CPU上实现了三维渲染光栅化阶段的并行性。
文档编号G06T15/00GK102736947SQ20111011635
公开日2012年10月17日 申请日期2011年5月6日 优先权日2011年5月6日
发明者孙季川, 张君琦, 蔡欢, 郑培枫 申请人:新奥特(北京)视频技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1