论文部分内容阅读
随着多核计算机的普及,并行计算技术已经广泛用于计算机科学的多个领域,其中以线程级并行计算最受关注。然而在图形领域,并行计算技术尚未得到有效的应用,多线程技术在基于3D引擎开发的图形程序中的应用只是停留在资源加载和音频独立线程等较浅层面,这是因为目前3D引擎的渲染流程仍采用单线程设计,在多核成为大势所趋的情况下大量CPU资源被浪费。 OGRE(Object-Oriented Graphics Rendering Engine,面向对象图形渲染引擎)是当前流行的一款开源3D图形引擎,它使用C++开发,封装了底层图形API,具有使用方便,扩展性强等优点。OGRE是一款典型的用串行方法设计的图形引擎,本文以OGRE3D引擎作为介质就此问题展开讨论,分别对OGRE中两个重要的模块——渲染系统和碰撞检测系统进行了多线程优化,具有代表性和实用性。 对于OGRE的渲染系统,首先用OpenMP方法对渲染系统的逻辑运算层面进行了并行优化,然后参考 OpenMP的 Fork-Join思路,结合 Win32线程库和DirectX11的多线程支持提出了一种新的多线程渲染方法,实现了渲染层面的多线程。 针对OGRE中只有粗略碰撞检测的问题,本文在OGRE原有碰撞检测的基础上实现了 AABB包围盒平衡二叉树的构建,使用同步深度优先遍历法进行平衡二叉树的遍历,最后用 OpenMP方法实现了并行化,提高了碰撞检测的精度并验证了并行算法的优越性。 在多核平台下的实验结果证明,多线程并行优化能够显著提高3D引擎中渲染模块和碰撞检测模块的性能,提高CPU利用率并改善多核CPU负载均衡问题,从而证明了多核平台下的多线程技术在图形领域的可行性和优越性。