我正在开发一种视觉测距算法,可以跟踪摄像机在图像之间的移动。该算法的一个组成部分是能够生成参考图像的增量密集翘曲图像,其中每个像素具有相应的深度(因此可以将其视为宽度x高度尺寸的点云)
我在过去使用OpenGL方面没有多少经验,但经过一些教程后,我设法设置了一个离屏渲染管道来接受转换矩阵并从新视角渲染pointcloud。我正在使用VBO加载GPU中的数据并渲染渲染缓冲区,并使用glReadPixels()读入CPU内存。
在我的Nvidia显卡上,每个经线可以渲染~1 ms。这是我能渲染数据最快的(640x480 3D点)吗?这一步被证明是我的算法的主要瓶颈,所以我非常感谢任何性能提示!
(我认为一个优化只能以灰度渲染,因为我并不真正关心颜色,但看起来内部OpenGL仍然使用颜色)
我目前的实施是在 https://gist.github.com/icoderaven/1212c7623881d8cd5e1f1e0acb7644fb, 和着色器 https://gist.github.com/icoderaven/053c9a6d674c86bde8f7246a48e5c033
谢谢!