OpenMP对3D程序优化有用吗
我在开发一3D场景编辑器程序,使用OpenGL平台显示场景,在显示场景前需要在CPU将几何体的顶点数据计算出来,然后送给显卡显示;
从NVIDIA的一些显卡编程优化资料得知,用于OpenGL显示用的线程最好没有任何繁重的CPU计算任务,就是说OpenGL线程的任务最好只有
发送渲染命令以及交换前后缓冲,主要不要有任务阻塞;顶点计算的任务量还是挺重的,所以我想了两个解决办法:
- 将顶点计算的任务分配到一专门的线程执行,不在OpenGL线程执行,就是说在渲染N帧时,后台要有个线程在同时计算N+1帧的顶点
数据;
- 将顶点计算的代码做OpenMP优化,让多个线程同时计算顶点数据;
方法1实现比较困难,方法2较方便,但我想OpenMP是把计算任务分配给多个线程执行,调用线程还是要被阻塞直到所有线程的计算任务
结束,无非阻塞的时间要比单线程方式短,所以我也在考虑方法2的性能是否比方法1差;当然我是第一次接触OpenMP,对OpenMP的运行机
制的认识还比较肤浅,所以存在上述的疑问;我想知道方法2和方法1的性能是否差不多(如果是的话我就用方法2了,谁不喜欢简单解决
问题的办法啊)?大家说说把