Files
2026-02-21 16:45:37 +08:00

85 lines
3.6 KiB
C#

using System;
using System.Runtime.InteropServices;
namespace Valve.VR
{
public class CVRTrackedCamera
{
private IVRTrackedCamera FnTable;
internal CVRTrackedCamera(IntPtr pInterface)
{
FnTable = (IVRTrackedCamera)Marshal.PtrToStructure(pInterface, typeof(IVRTrackedCamera));
}
public string GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError)
{
IntPtr ptr = FnTable.GetCameraErrorNameFromEnum(eCameraError);
return Marshal.PtrToStringAnsi(ptr);
}
public EVRTrackedCameraError HasCamera(uint nDeviceIndex, ref bool pHasCamera)
{
pHasCamera = false;
return FnTable.HasCamera(nDeviceIndex, ref pHasCamera);
}
public EVRTrackedCameraError GetCameraFrameSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref uint pnWidth, ref uint pnHeight, ref uint pnFrameBufferSize)
{
pnWidth = 0u;
pnHeight = 0u;
pnFrameBufferSize = 0u;
return FnTable.GetCameraFrameSize(nDeviceIndex, eFrameType, ref pnWidth, ref pnHeight, ref pnFrameBufferSize);
}
public EVRTrackedCameraError GetCameraIntrinsics(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref HmdVector2_t pFocalLength, ref HmdVector2_t pCenter)
{
return FnTable.GetCameraIntrinsics(nDeviceIndex, eFrameType, ref pFocalLength, ref pCenter);
}
public EVRTrackedCameraError GetCameraProjection(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, ref HmdMatrix44_t pProjection)
{
return FnTable.GetCameraProjection(nDeviceIndex, eFrameType, flZNear, flZFar, ref pProjection);
}
public EVRTrackedCameraError AcquireVideoStreamingService(uint nDeviceIndex, ref ulong pHandle)
{
pHandle = 0uL;
return FnTable.AcquireVideoStreamingService(nDeviceIndex, ref pHandle);
}
public EVRTrackedCameraError ReleaseVideoStreamingService(ulong hTrackedCamera)
{
return FnTable.ReleaseVideoStreamingService(hTrackedCamera);
}
public EVRTrackedCameraError GetVideoStreamFrameBuffer(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pFrameBuffer, uint nFrameBufferSize, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize)
{
return FnTable.GetVideoStreamFrameBuffer(hTrackedCamera, eFrameType, pFrameBuffer, nFrameBufferSize, ref pFrameHeader, nFrameHeaderSize);
}
public EVRTrackedCameraError GetVideoStreamTextureSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref VRTextureBounds_t pTextureBounds, ref uint pnWidth, ref uint pnHeight)
{
pnWidth = 0u;
pnHeight = 0u;
return FnTable.GetVideoStreamTextureSize(nDeviceIndex, eFrameType, ref pTextureBounds, ref pnWidth, ref pnHeight);
}
public EVRTrackedCameraError GetVideoStreamTextureD3D11(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize)
{
return FnTable.GetVideoStreamTextureD3D11(hTrackedCamera, eFrameType, pD3D11DeviceOrResource, ref ppD3D11ShaderResourceView, ref pFrameHeader, nFrameHeaderSize);
}
public EVRTrackedCameraError GetVideoStreamTextureGL(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, ref uint pglTextureId, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize)
{
pglTextureId = 0u;
return FnTable.GetVideoStreamTextureGL(hTrackedCamera, eFrameType, ref pglTextureId, ref pFrameHeader, nFrameHeaderSize);
}
public EVRTrackedCameraError ReleaseVideoStreamTextureGL(ulong hTrackedCamera, uint glTextureId)
{
return FnTable.ReleaseVideoStreamTextureGL(hTrackedCamera, glTextureId);
}
}
}