基于基元重启的OpenGL和CUDA图形渲染算法探索
2016-04-11刘敏娜李延香魏浩
刘敏娜 李延香 魏浩



摘要:针对OpenGL渲染图形要多次访问缓存区的问题,提出一种OpenGL和CUDA混合编程的图形渲染算法来加速PerlinKernel生成虚拟地形图。首先,通过OpenGL将缓存映射到CUDA内存空间,利用CUDA完成加速计算任务;然后,为几何图形设置开始和结束的位置标志,使用基元重启对图形进行组合;最后,对缓冲区对象进行渲染。实验结果表明,改进后的基于基元重启的混合算法在GTX650GPU上的平均帧速率为960fps,帧速率提高6%,算法改进后渲染方法的执行效率提高了63倍。实验证实基元重启可以提高3D处理性能。
关键词:图形渲染;OpenGL;CUDA;基元重启;Perlin
中图分类号:TP393文献标识码:A
1引言
图形渲染在核试验、DNA分子分布、天气预报等大规模科学计算任务中扮演着重要的角色[1,2]。在OpenGL中图形渲染是由CPU进行单独完成的,CPU从RAM中获得数据并且处理数据,然后写入RAM中[3]。这样做性能并不高,原因如下:①CPU的负载重而导致响应速度慢,影响渲染速度和质量;②图形渲染中使用了multiDraw()方法,绘图开销过大。multiDraw()用一条命令代替了多条glDraw*()方法,但是使用这个方法,导致顶点数组扩大了1/2,大量的冗余数据传输到CPU中,造成极大的开销[4-7]。
本文提出了一种CUDA和OpenGL混合图形渲染的方法。CUDA(ComputeUnifiedDeviceArchitecture),是NVIDIA显卡厂商推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题[8-10]。在本文中,为了进一步提高数据传输效率,图形渲染中引入了基元重启,使用基元重启可以对几何图形进行组合,组合之后,需要处理的集合图形数据更少,系统运行速度更快。
2.1传统的OpenGL图形渲染……p>
