3_Subsystem定义特定功能

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARSubsystems;

/// <summary>
/// 创建人:
/// 创建时间:2022-2-11
/// 功能描述:Subsystem定义特定功能的界面
/// </summary>
public class XR_Subsystem : MonoBehaviour
{
    void Start()
    {
        var planeSubsystem = CreatePlaneSubsystem();
        if (planeSubsystem != null)
        {
            // 开始平面检测
            planeSubsystem.Start();
            // 停止平面检测,但这并不会影响到已检测到的平面
            planeSubsystem.Stop();
            // 销毁该planeSybsystem
            planeSubsystem.Destroy();
            planeSubsystem = null;
        }
    }
    
    void Update()
    {
        
    }
    /// <summary>
    /// 定义特定功能的界面XRPlaneSubsystem、XRFaceSubsystem、XRCameraSubsystem
    /// </summary>
    /// <returns></returns>
    private XRPlaneSubsystem CreatePlaneSubsystem()
    {
        // 得到所有可用的plane subsystem
        var descriptors = new List<XRPlaneSubsystemDescriptor>();
        SubsystemManager.GetSubsystemDescriptors(descriptors);
        // 遍历获取一个挥之boundary vertices的功能
        foreach (var descriptor in descriptors)
        {
            if (descriptor.supportsBoundaryVertices)
            {
                // 创建plane subsystem
                return descriptor.Create();
            }
        }
        return null;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`udev_monitor_filter_add_match_subsystem_devtype()`是一个函数,它用于添加udev监视器的过滤规则,以匹配指定的子系统和设备类型。 在Linux系统中,udev(即用户空间设备管理器)用于动态地管理设备节点,它负责在设备插入或移除时进行相应的操作。udev监视器用于监视udev事件,并可以根据用户定义的过滤规则来筛选感兴趣的事件。 `udev_monitor_filter_add_match_subsystem_devtype()`函数可以将子系统和设备类型作为参数,以便过滤出特定类型的设备。该函数的具体用法可能因不同的编程语言和库而有所差异,通常需要在使用udev库的程序中进行调用。 下面是一个示例代码片段,展示了如何使用`udev_monitor_filter_add_match_subsystem_devtype()`函数添加过滤规则: ```c #include <libudev.h> int main() { struct udev_monitor *monitor; struct udev *udev; int ret; // 初始化udev udev = udev_new(); if (!udev) { // 错误处理 return 1; } // 创建udev监视器 monitor = udev_monitor_new_from_netlink(udev, "udev"); if (!monitor) { // 错误处理 udev_unref(udev); return 1; } // 添加过滤规则 ret = udev_monitor_filter_add_match_subsystem_devtype(monitor, "block", NULL); if (ret < 0) { // 错误处理 udev_monitor_unref(monitor); udev_unref(udev); return 1; } // 启动监视器 ret = udev_monitor_enable_receiving(monitor); if (ret < 0) { // 错误处理 udev_monitor_unref(monitor); udev_unref(udev); return 1; } // 监视udev事件并处理 // ... // 释放资源 udev_monitor_unref(monitor); udev_unref(udev); return 0; } ``` 上述示例代码中,通过调用`udev_monitor_filter_add_match_subsystem_devtype()`函数,将过滤规则设置为匹配"block"子系统的所有设备类型。然后,通过`udev_monitor_enable_receiving()`函数启动监视器,并可继续处理接收到的udev事件。 请注意,上述示例代码仅用于说明函数的用法,实际使用时需要根据具体需求进行适当的修改和错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值