IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> OpenVR API简单介绍 -> 正文阅读

[游戏开发]OpenVR API简单介绍

在这里插入图片描述

最近可能是元宇宙这概念火了,有挺多小伙伴私信说对VR开发产生浓浓的兴趣,想知道关于OpenVR的API介绍等等。

大家可以看看官方的OpenVR API
链接:官方OpenVR API


如果想在开发VR游戏的时候,选择切换键鼠输入还是VR端输入,可了解一下这些API

初始化与关闭释放:
由于OpenVR API能使游戏能够连接任何添加VR的外设,因此它不是自动初始化。调用函数VR_Init来初始化OpenVR API以及访问接口IVRSystem;
在这里插入图片描述

调用VR_Shutdown来断开游戏与外设的连接以及释放IVRSystem接口。
在这里插入图片描述


程序通过IVRSystem来调用其他的OpenVR API方法。如果调用失败,则将返回NULL并且赋给peError一个错误码用来指示错误内容。peError为产生的错误代码或者没有错误时为VRInitError_None。错误码如下:
  • HmdError_None (0)- 无错误

  • HmdError_Unknown (1) - 未知错误

  • HmdError_Init_InstallationNotFound (100) - 在路径注册表中指定的安装文件夹不存在

  • HmdError_Init_InstallationCorrupt (101) - 在路径注册表中指定的安装文件夹没有bin文件夹

  • HmdError_Init_VRClientDLLNotFound (102) - bin文件夹中没有vrclient.dll 或系统对应的动态库

  • HmdError_Init_FileNotFound (103) - 驱动不能加载

  • HmdError_Init_FactoryNotFound (104) - vrclient.dll中的工厂方法找不到,是vrclient.dll出现异常吗?

  • HmdError_Init_InterfaceNotFound (105) - VR_Init或VR_GetGenericInterface 请求的接口不存在,是使用的SDK版本比安装的runtime版本更新吗?

  • HmdError_Init_InvalidInterface (106) - 错误码当前没有被使用

  • HmdError_Init_UserConfigDirectoryInvalid (107) - 路径注册表中的配置目录不可写

  • HmdError_Init_HmdNotFound (108) - HMD没有添加到系统或者HMD没有初始化,该错误很常见,就是因为设备没有检测到
    在这里插入图片描述

  • HmdError_Init_NotInitialized (109) - 如果VR_GetGenericInterface在VR_Init之前或者在VR_Shutdown之后被调用会返回这个错误

  • HmdError_Init_PathRegistryNotFound (110) - VR路径注册文件不能被读。重新安装OpenVR runtime或Steam上的SteamVR应用程序

  • HmdError_Init_NoConfigPath (111) - 配置路径没有在路径注册表中指定

  • HmdError_Init_NoLogPath (112) - log路径没有在路径注册表中指定

  • HmdError_Init_PathRegistryNotWritable (113) - VR路径注册表不可写

  • HmdError_Driver_Failed (200) - 驱动初始化失败,内部错误

  • HmdError_Driver_Unknown (201) - 驱动由于位置原因失败,内部错误

  • HmdError_Driver_HmdUnknown (202) - 驱动未检测到HMD,内部错误

  • HmdError_Driver_NotLoaded (203) - 在该驱动发出请求前,还没有加载,内部错误

  • HmdError_Driver_RuntimeOutOfDate (204) - 如果一个驱动自带runtime,那么需要更新它的runtime.

  • HmdError_Driver_HmdInUse (205) - 另外一个非OpenVR的应用程序正在使用HMD

  • HmdError_IPC_ServerInitFailed (300) - OpenVR不能够启动vrserver.

  • HmdError_IPC_ConnectFailed (301) - 多次尝试后,OpenVR不能链接到vrserver或vrcompositor.

  • HmdError_IPC_SharedStateInitFailed (302) - vrserver或vrcompositor的共享内存不能够打开

  • HmdError_IPC_CompositorInitFailed (303) - OpenVR不能够启动vrcompositor.

  • HmdError_IPC_MutexInitFailed (304) - OpenVR不能够创建互斥量来与vrcompositor通信.

  • HmdError_VendorSpecific_UnableToConnectToOculusRuntime (1000) - 由于未知原因导致到Oculus runtime的连接失败.

  • HmdError_Steam_SteamInstallationNotFound (2000) - 当前没有使用的错误码.
    根据以上错误代码,可以解决相应的报错问题


接口:
API被分成了多个接口,其中标记黄色的为主要接口:

  1. IVRSystem:主要提供用来处理显示,畸变,追踪,控制以及事件访问的接口
  2. IVRChaperone:主要用来提供访问监护软硬件界限的接口
  3. IVRCompositor:允许通过VR混合器来使得一个应用程序渲染3D内容
  4. IVROverlay:允许通过VR混合器来使得一个应用程序渲染2D内容
  5. IVRRenderModels:允许应用程序访问渲染模型
  6. IVRInput :允许应用程序定义和查询调用操作(和操作集),以便用户可以创建、编辑和与任何受支持的设备共享自定义绑定。
  7. IVRScreenshots:允许应用程序请求与提交截图
  8. IVRChaperoneSetup:主要用来设置访问监护软硬件界限
  9. IVRResources:主要用来加载资源的接口
  10. IVRExtendedDisplay:提供扩展显示区域的接口
  11. IVRSettings:主要用来对VR混合器的属性配置接口
  12. IVRApplications:主要用来进行对程序的管理接口
  13. IVRTrackedCamera:提供追踪VR摄像机的接口
  14. IVRDriverManager:用来提供检测满足VR运行的驱动程序的接口

常用的函数:

VR_Shutdown()
关闭VR硬件的连接且清除OpenVR API,调用该函数后,由VR_Init返回的IVRSystem指针无效。

bool VR_IsHmdPresent()
如果系统认为HMD存在系统中,则返回true。该函数比初始化所有的OpenVR API都要快,它仅仅是为了检测HMD。
该函数会在VR_Init()返回NULL情况下返回true。这是一个快速告诉用户现在没有VR硬件的方法,但是还是有一些启动条件必须通过启动系统才能够检测到。

bool VR_IsRuntimeInstalled()
当OpenVR runtime安装在系统上时,返回true。

char VR_RuntimePath()
返回OpenVR runtime的安装目录

char VR_GetVRInitErrorAsSymbol(EVRInitError error)
该函数以字符串的形式返回EVRInitError枚举量的值。它在任何时间都可以被调用,而且与VR系统是否启动无关。

void VR_GetGenericInterface(char pchInterfaceVersion, EVRInitError peError)
该函数通过OpenVR提供的名字返回一个接口。如果该接口未找到,则它会返回NULL且在peError中回传一个错误码。如果vr::VR_Init()没有成功的被调用,则它会返回NULL。


有些API还没用到过,根据官方文档翻译了一下,如有错误请指出,谢谢哈~

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:41:48  更:2021-11-23 12:42:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 22:27:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码