允许应用程序访问渲染模型。
vr::IVRRenderModels接口提供访问相关硬件的3D模型的函数,这些模型都尽可能地反映设备的实际外观。
接口函数:
vr::IVRRenderModels接口包含下面的函数:
LoadRenderModel:
bool LoadRenderModel( const char *pchRenderModelName, RenderModel_t *pRenderModel )
加载并返回应用程序中要使用到的渲染模型
pchRenderModelName - 要加载的渲染模型的名字
RenderModel_t *pRenderModel - 加收渲染模型的结构体
描述:
加载并返回应用程序中要使用到的渲染模型。pchRenderModelName应该为从属性Prop_RenderModelName_String中得到的一个渲染模型名字或者是一个指向硬盘上渲染模型的绝对路径名字。
返回的渲染模型会一直有效直到调用VR_Shutdown()或FreeRenderModel()为止。当带有渲染模型的应用程序结束时,应该调用FreeRenderModel()来释放与模型相关的内存。
若模型不能够加载则返回false。
在启动或追踪设备连接和断开连接时,API期望该函数被调用。若每帧都调用会损害性能。
渲染模型结构体:
这些结构体会被渲染模型函数使用:
/** a single vertex in a render model */
struct RenderModel_Vertex_t
{
HmdVector3_t vPosition; // position in meters in device space
HmdVector3_t vNormal;
float rfTextureCoord[ 2 ];
};
/** A texture map for use on a render model */
struct RenderModel_TextureMap_t
{
uint16_t unWidth, unHeight; // width and height of the texture map in pixels
const uint8_t *rubTextureMapData; // Map texture data. All textures are RGBA with 8 bits per channel per pixel. Data size is width * height * 4ub
};
/** Contains everything a game needs to render a single tracked or static object for the user. */
struct RenderModel_t
{
uint64_t ulInternalHandle; // Used internally by SteamVR
const RenderModel_Vertex_t *rVertexData; // Vertex data for the mesh
uint32_t unVertexCount; // Number of vertices in the vertex data
const uint16_t *rIndexData; // Indices into the vertex data for each triangle
uint32_t unTriangleCount; // Number of triangles in the mesh. Index count is 3 * TriangleCount
RenderModel_TextureMap_t diffuseTexture; // RGBA diffuse texture for the model
};
FreeRenderModel:
void FreeRenderModel( RenderModel_t *pRenderModel )
释放之前返回的渲染模型。
GetRenderModelName:
uint32_t GetRenderModelName( uint32_t unRenderModelIndex, char *pchRenderModelName, uint32_t unRenderModelNameLen )
返回第N个渲染模型的名字。
unRenderModelIndex - 要返回名字模型的索引。
pchRenderModelName - 用于保存模型名字的缓冲
unRenderModelNameLen - 缓冲字节长度
描述:
返回由OpenVR运行时提供的第N个渲染模型的名字。所提供的索引不是追踪设备索引,而是一个介于0到GetRenderModelCount()-1返回值之间的数字。若索引超出了函数范围,则返回0。在所有其他情形内,函数返回所需的缓冲大小来保存名字,它的长度为名字加上一个null结束符。若所提供的缓冲足够长,该名字会被复制进去。
GetRenderModelCount:
uint32_t GetRenderModelCount()
返回由OpenVR运行时提供的渲染模型数量
参考网址