# 原生 PC SDK
# 准备工作
# 设备连接
连接小派的头显设备到电脑,安装 Pimax 客户端软件,并确认 Pimax 客户端软件已识别并连接到小派设备,并可以体验 Pimax 客户端软件中的内容。
# SDK安装
从这里下载 Windows SDK 并安装,假设安装路径为 C:\Program Files\Pimax\Sdk, 本文后续将以此为 SDK 安装路径,开发者如果将 SDK 安装到不同目录,在相关的步骤中将此路径替换为开发者的即可。
# 相关基础知识
本文假定开发者已具备基本的c、c++编程技能,熟悉使用DirectX或者OpenGL的API使用。
注意
目前SDK仅支持DirectX11和OpenGL的开发(DirectX12和Vulkan将在未来支持))
# 编译选项设置
将 C:\Program Files\Pimax\Sdk\Include 添加到开发者编译工程的头文件包含路径中, 没有额外的Lib进行链接,只需要在代码中包含相关的头文件即可。
# 相关术语
- VR:虚拟现实
- PVR:Pimax VR
- HMD:头显设备
- App:应用程序
- PVR Runtime: 对小派设备进行管理使用的进程,并负责处理App的相关请求
# 主要功能介绍
# 头文件使用
在相关的代码中只要包含PVR_API.h就可以。 如果是基于DirectX做相关的渲染工作,再包含PVR_API_D3D.h; 如果是基于OpenGL做相关的渲染工作,则包含PVR_API_GL.h
# 创建运行环境
每一个App在可以使用SDK提供的功能之前需要使用pvr_initialise初始化唯一的运行环境,并在App退出前调用pvr_shutdown。
# 创建Session
每一个App需要通过pvr_createSession创建一个Session来和PVR Runtime通信, 记得在App退出前调用pvr_destroySession销毁这个Session, 一个App可以创建多个Session。
# 创建TextureSwapChain
类似于DXGI的SwapChainBuffer,通过pvr_createTextureSwapChainDX或者pvr_createTextureSwapChainGL创建,每个SwapChainBuffer包含多个texture buffer, 在App的每一帧中都需要通过pvr_getTextureSwapChainCurrentIndex获取当前可以使用的buffer的idx,然后通过pvr_getTextureSwapChainBufferDX或者pvr_getTextureSwapChainBufferGL获取对应的buffer,app将画面渲染到这个buffer中,最后通过pvr_commitTextureSwapChain提交.
# 获取定位信息
在App中渲染出正确的左右眼画面,需要获取到正确的眼睛姿态(位置和方向) 信息;通过pvr_getTrackingState可以获取指定时间点的头部姿态(还有手柄),通常使用pvr_getPredictedDisplayTime获取的时间点,通过pvr_getEyeRenderInfo获取 头部和眼睛的相对姿态,然后通过pvr_calcEyePoses计算出最终的眼睛姿态。App 中需要使用这个计算出来的最终姿态来做为View Matrix来使用。
# 渲染立体画面
App 中将 TextureSwapChain 的当前 buffer 做为 render target,使用上一步骤得到 View Matrix,利用 pvrMatrix4f_Projection 获取Projection Matrix,将 App 的内容渲染到 TextureSwapChain中。
# 提交立体画面到设备
通过pvr_submitFrame将App渲染过的TextureSwapChain提交到PVR Runtime,并最终显示到小派头显设备中。
# 处理手柄控制器输入
在App的Loop中可以通过pvr_getInputState获取当前手柄的按键信息。
# 多显卡的处理
App 中需要通过 pvr_getEyeDisplayInfo 获取指定的 Adapter Id,然后使用指定的 Adapter 来创建D3D Device。
# Samples
SimpleVRDemoDX11: 基于 DirectXTK 的 VR demo。