Qualcomm_Snapdragon_VR_SDK SvrPlugin脚本简介(1)

从本文开始将介绍SDK中另外一个比较关键的脚本结构,SvrPlugin。

具体实现的代码如下:

abstract class SvrPlugin
{
	private static SvrPlugin instance;
	public static SvrPlugin Instance
	{
		get
		{
			if (instance == null)
			{
				if(!Application.isEditor && Application.platform == RuntimePlatform.Android)
				{
					instance = SvrPluginAndroid.Create();
				}
				else
				{
					instance = SvrPluginWin.Create();
				}
			}
			return instance;
		}
	}

    public SvrManager svrCamera = null;
    public SvrEye[] eyes = null;
    public SvrOverlay[] overlays = null;
    public DeviceInfo deviceInfo;

    public enum PerfLevel
	{
        kPerfSystem = 0,
        kPerfMaximum = 1,
		kPerfNormal = 2,
		kPerfMinimum = 3
	}

    public enum TrackingMode
    {
        kTrackingOrientation = 1,
        kTrackingPosition = 2
    }

    public enum FrameOption
    {
        kDisableDistortionCorrection = (1 << 0),    //!< Disables the lens distortion correction (useful for debugging)
        kDisableReprojection = (1 << 1),            //!< Disables re-projection
        kEnableMotionToPhoton = (1 << 2),           //!< Enables motion to photon testing 
        kDisableChromaticCorrection = (1 << 3)      //!< Disables the lens chromatic aberration correction (performance optimization)
    };

    public struct ViewFrustum
    {
        public float left;           //!< Left Plane of Frustum
        public float right;          //!< Right Plane of Frustum
        public float top;            //!< Top Plane of Frustum
        public float bottom;         //!< Bottom Plane of Frustum

        public float near;           //!< Near Plane of Frustum
        public float far;            //!< Far Plane of Frustum (Arbitrary)
    }

    public struct DeviceInfo
	{
		public int 		displayWidthPixels;
		public int    	displayHeightPixels;
		public float  	displayRefreshRateHz;
		public int    	targetEyeWidthPixels;
		public int    	targetEyeHeightPixels;
		public float  	targetFovXRad;
		public float  	targetFovYRad;
        public ViewFrustum targetFrustumLeft;
        public ViewFrustum targetFrustumRight;
	}

    public enum eEventType
    {
        kEventNone = 0,
        kEventSdkServiceStarting = 1,
        kEventSdkServiceStarted = 2,
        kEventSdkServiceStopped = 3,
        kEventControllerConnecting = 4,
        kEventControllerConnected = 5,
        kEventControllerDisconnected = 6,
        kEventThermal = 7,
        kEventSensorError
    };

    public virtual bool PollEvent(ref SvrManager.SvrEvent frameEvent) { return false; }

    public virtual bool IsInitialized() { return false; }
    public virtual bool IsRunning() { return false; }
    public virtual IEnumerator Initialize ()
    {
        svrCamera = SvrManager.Instance;
        if (svrCamera == null)
        {
            Debug.LogError("SvrManager object not found!");
            yield break;
        }

        yield break;
    }
	public virtual IEnumerator BeginVr(int cpuPerfLevel =0, int gpuPerfLevel =0)
    {
        if (eyes == null)
        {
            eyes = SvrEye.Instances.ToArray();
            if (eyes == null)
            {
                Debug.Log("Components with SvrEye not found!");
            }

            Array.Sort(eyes);
        }

        if (overlays == null)
        {
            overlays = SvrOverlay.Instances.ToArray();
            if (overlays == null)
            {
                Debug.Log("Components with SvrOverlay not found!");
            }

            Array.Sort(overlays);
        }
        yield break;
    }
    public virtual void EndVr()
    {
        eyes = null;
        overlays = null;
    }
	public virtual void BeginEye() { }
    public virtual void EndEye() { }
    public virtual void SetTrackingMode(TrackingMode mode) { }
	public virtual void SetFoveationParameters(float focalPointX, float focalPointY, float foveationGainX, float foveationGainY, float foveationArea) {}
    public virtual int GetTrackingMode() { return 0; }
    public virtual void SetPerformanceLevels(int newCpuPerfLevel, int newGpuPerfLevel) { }
    public virtual void SetFrameOption(FrameOption frameOption) { }
    public virtual void UnsetFrameOption(FrameOption frameOption) { }
    public virtual void SetVSyncCount(int vSyncCount) { }
    public virtual bool RecenterTracking() { return true; }
    public virtual void SubmitFrame(int frameIndex, float fieldOfView, int frameType) { }
	public virtual int GetPredictedPose (ref Quaternion orientation, ref Vector3 position, int frameIndex = -1)
	{
		orientation =  Quaternion.identity;
		position = Vector3.zero;
        return 0;
	}
	public abstract DeviceInfo GetDeviceInfo ();
	public virtual void Shutdown()
    {
        SvrPlugin.instance = null;
    }

	//---------------------------------------------------------------------------------------------
	public virtual int ControllerStartTracking(string desc) {
		return -1;
	}

	//---------------------------------------------------------------------------------------------
	public virtual void ControllerStopTracking(int handle) {
	}

	//---------------------------------------------------------------------------------------------
	public virtual SvrControllerState ControllerGetState(int handle) {
		return new SvrControllerState();
	}

	//---------------------------------------------------------------------------------------------
	public virtual void ControllerSendMessage(int handle, SvrController.svrControllerMessageType what, int arg1, int arg2) {
	}

	//---------------------------------------------------------------------------------------------
	public virtual object ControllerQuery(int handle, SvrController.svrControllerQueryType what) {
		return null;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qualcomm_mde.win 是指高通移动开发平台(Qualcomm Mobile Development Environment)的一个软件组件。 高通是一家全球领先的无线通信技术公司,它开发了一系列芯片和软件解决方案,用于移动通信设备,如智能手机、平板电脑和智能穿戴设备等。Qualcomm_mde.win 是高通移动开发平台的一个重要组成部分,旨在为开发者提供一个集成的开发环境和工具,以便他们能够更轻松地开发和测试基于高通芯片的应用程序和软件。 Qualcomm_mde.win 提供了多种功能和工具,包括调试器、编译器、模拟器和性能分析器等。开发者可以使用这些工具来进行应用程序的开发、调试和测试。它还支持多种开发语言和框架,如C++、Java和Android等,使开发者能够根据自己的喜好和需求选择适合的开发方法。同时,Qualcomm_mde.win 还提供了丰富的开发文档和示例代码,帮助开发者快速上手和解决问题。 使用 Qualcomm_mde.win 可以帮助开发者更高效地进行移动应用程序的开发和测试工作。它提供了许多强大的工具和功能,使开发者能够更好地理解和调试应用程序在高通芯片上的运行情况。无论是入门级的开发者还是经验丰富的专业人士,都可以从 Qualcomm_mde.win 中受益,并提高其开发工作的效率和质量。 总之,Qualcomm_mde.win 是高通移动开发平台的一个重要组件,为开发者提供了丰富的开发工具和环境,使他们能够更轻松地开发和测试基于高通芯片的应用程序和软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值