高效的六面体变换算法实现(二) —— 基于GPU的转换方式A

鉴于上面描述的CPU的六面体变换算法的问题。我们首先想到的是用多媒体指令集来对facebook的算法进行加速。但这面临一个问题是,算法里面有大量的查表操作,不适合用单指令多数据(SIMD)的指令来优化。即使对少部分代码进行了优化,也解决不了在上篇中遇到的困境。

因此,需要换个思路。在头脑中首先想到的是用GPU的“画图”功能来做这种转换。主要感觉是GPU画图的速度非常快,稍微好点的GPU就能实时画4K的视频图像,其价格应该比服务器级别的CPU便宜简单多了,硬件实现嘛,速度肯定比软件的速度快。这里采用了OpenGL语言,既然是画图。

有了使用GPU的想法之后,直观的想法是,先把二维的世界地图画到地球仪上,然后在地球仪内放一个正六面体。眼睛放在球心位置,设置FOV为90度,然后变换眼睛的朝向,分别对准正六面体的六个面的中心位置,将球面投影到各个面上,获得的六幅图像,将这些图像存成依次排列的六个面(排列方法根据自己需要来制定)。于是CubeMap的全景图像就得到了。

这个想法有个问题,就是把二维的等圆柱图像渲染成一个球面的速度问题。当绘制的球越光滑越逼近的时候,绘制所需要的时间就越长,基本已经不能实时。这点背离了我们的初衷。且如果绘制的球面不够光滑,则投影到六面体上的图像也会不够准确,导致数据的丢失或失真。

所以从这个角度而言,这种方法对于单幅的图像而言,可行;对于大量的连续视频而言,速度和精度都不好。走到这里,我们发现遇到了困难,及时止损,再想想其他的辙。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值