学习新项目

在和老师讨论之后,决定来使用HTC Vive实现图像拼接以及观看全景图的效果;


1. 了解基本情况

HTC公司和Valve公司合作,借用SteamVR平台(目前最大的VR游戏平台),打造的HTC Vive头盔。


2. 查找开源代码以便进行下一步的学习

  • 在查找源码的过程中出现好多问题,有的已经解决,有的还未解决;
  • 目前已有三个VR操作系统:Oculus OS,Valve's openVR和OSVR;我选择了openVR。
  • 我找到了一版基于Unreal的HTC Vive示例代码,我本人是使用Visual Studio编写代码的,不知道Unreal,Unity和Visual Studio的关系是什么,是平行取代关系,还是都被需要;我觉得是平行取代的关系,因为在我看openVR的代码的时候,它使用openGL来提供图形接口的,说白了就是游戏界面;所以此三个软件平台是可替代关系;



3. 源码学习

  • 在gitHub上找到了openVR的源码,开始学习;
  • 源码是使用C#写的,纵观源码,共有lodepng.cpp Matrices.cpp pathtools.cpp hellovr_opengl_main.cpp四个程序,主要学习了main函数代码内容(共2000行左右);

残留的问题有:


  • SDL和openGL的关系是什么呢?//此问题已解决;
   SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数
   openGL提供图形接口,当前主流的图形API之一,高性能的图形渲染;
  • position为何使用4*4的矩阵,和深层次的内核有关吗?
  • SDL_event和VR_event的区别?
  • 代码中device和controller的区别?
   我理解的是device代表头盔,controller代表手柄;

4.结合所学内容

考虑把图像拼接的代码加到什么地方,还有生成的全景图再哪个地方呈现;
分析除了main函数所在cpp之外的程序,Matrices.cpp提供了矩阵的定义和使用函数,pathtools.cpp提供了路径的获取和相关操作,loadpng.cpp是图像的相关操作(包括decoder等)这个cpp的作用目前不知道,在main函数里面没有被调用到,程序开头的注释写的是以供参考使用。所以需要修改到的应该是 pathtools.cpp和hellovr_opengl_main.cpp。


****9.18更新

1.  今天在细致查阅openVR的代码的时候,发现之前看的openGL_sample工程只是其中的一小部分,还有其他几个工程包括:QT(tracked_camera和overlay),unity(keyboard和teleport),应该是示例在QT和unity里面的用法,还有driver_sample,不知道它和opengl_sample的区别;

2.  解决一个问题,driver_sample和openGL_sample都是C++代码而不是C#,所以不用管C++与C#之间的转换;

3.  发现一个问题:在VR设备通信中,driver host client的关系是什么?

发现并解决一个问题,应用程序和驱动程序的区别: 驱动程序告诉系统计算机内有这么一个硬件API则是告诉系统有应用程序 需要调用硬件 系统在通过驱动程序找到这个需要调用的硬件给应用程序使用; 因此需要学习的代码是openGL_sample工程;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值