openVR驱动接口之IClientTrackedDeviceProvider简介

来源:互联网 发布:行程助手软件 编辑:程序博客网 时间:2024/05/16 03:42

IClientTrackedDeviceProvider

这个接口在SDK的openvr_driver.h文件中定义的.用来处理应用场景中各种各样的客户端操作.驱动中必须实现的接口(后续会淘汰,但是目前还是要用),它将被vrclient.dll加载.
EVRInitError Init( EClientDriverMode eDriverMode, IDriverLog *pDriverLog, vr::IClientDriverHost *pDriverHost, const char *pchUserDriverConfigDir, const char *pchDriverInstallDir )
初始化驱动.这个函数将会在所有其他方法之前被调用,除了BIsHmdPresent().BIsHmdPresent会在init/cleanup对之外调用.
如果这个函数返回值是除VRInitError_None之外的其他值,驱动将会被卸载.
pDriverHost永远不会为空,总是指向一个IClientDriverHost接口.

  • pchUserDriverConfigDir:驱动保存用户配置文件的文件夹的绝对路径
  • pchDriverInstallDir:驱动根文件夹的绝对路径.

void Cleanup()
在卸载之前清理驱动资源.
bool BIsHmdPresent( const char *pchUserConfigDir )
当客户端需要通知应用程序是否有HMD连接上时被调用.这个方法应该尽可能的轻(在这个函数里不要做太多的复杂的事情),并且应该在Hooking进程函数或离开资源加载时没有任何副作用.init函数不应该在这之前被调用,并且不会再它之后调用Cleanup.
EVRInitError SetDisplayId( const char *pchDisplayId )
当客户端初始化一个HMD,让客户端驱动知道他们使用的是哪一个是正在被调用的.
HiddenAreaMesh_t GetHiddenAreaMesh( EVREye eEye )
返回当前HMD模版网格信息.如果这个HMD没有模版网格的顶点数据和计数,将分别返回NULL和0(即pVertexData为NULL,unTriangleCount为0).这些网格是将要被渲染到模版缓冲区中的(或深度缓冲设置),这是在渲染每个眼睛的视图之前的.覆盖在网格的像素在镜头畸变之后不会被用户看见以及可见性的面板上(显示屏).通过让GPU提前拒绝那些不会被用户看到的像素进入图像渲染器.
uint32_t GetMCImage( uint32_t *pImgWidth, uint32_t *pImgHeight, uint32_t *pChannels, void *pDataBuffer, uint32_t unBufferLen )
为当前HMD获取MC图像,返回保持指定资源所需缓冲区的字节数.

0 0
原创粉丝点击