XR_EXT_interaction_profile_battery_state_display

이름 문자열

XR_EXT_interaction_profile_battery_state_display

확장 프로그램 유형

인스턴스 확장 프로그램

등록된 내선 번호

837

버전

1

승인 상태

비준됨

확장 프로그램 및 버전 종속 항목

OpenXR 1.0

최종 수정일

2025-10-21

IP 상태

알려진 IP 소유권 주장이 없습니다.

도움을 주신 분들

존 키어니, Meta
다니엘 윌모트, Valve
데니 뢴그렌, Varjo
야콥 보르네크란츠, NVIDIA
네이선 누버, Valve
라클란 포드, Google
니하브 자인, Google

개요

XR_EXT_interaction_profile_battery_state_display는 애플리케이션이 상호작용 프로필과 함께 사용되는 기기의 배터리 상태 정보를 런타임에 쿼리하는 메커니즘을 제공합니다. 이 배터리 상태 정보는 표시 목적으로만 사용해야 하며(should) 런타임은 이 정보가 내장 시스템 사용자 인터페이스에 사용되는 정보와 일치하도록 해야 합니다(should).

여러 실제 기기가 사용자 맞춤설정 또는 접근성을 위해 다시 매핑을 실행하는 런타임과 같이 최상위 경로와 연결된 작업에 입력을 제공하는 경우 이러한 런타임은 유용한 배터리 정보를 단일 값으로 표시하기 위해 최선을 다해야 합니다(should).

특히 이 정보는 런타임 또는 기기 간에 보정되지 않으며 경고를 생성하거나 애플리케이션 동작을 수정하는 데 사용되지 않아야 합니다(SHOULD).

배터리 상태 쿼리

XrBatteryStateDisplayEXT 구조는 다음과 같이 정의됩니다.

typedef struct XrBatteryStateDisplayEXT {
    XrStructureType                       type;
    void*                                 next;
    XrBatteryStateDisplayStateFlagsEXT    stateFlags;
    float                                 batteryLevel;
} XrBatteryStateDisplayEXT;

회원 설명

  • type는 이 구조의 XrStructureType입니다.
  • next는 NULL 또는 구조 체인의 다음 구조에 대한 포인터입니다.
  • stateFlags는 XrBatteryStateDisplayStateFlagBitsEXT에 정의된 비트 마스크를 사용하여 batteryLevel의 유효성을 설명합니다.
  • batteryLevel는 연결된 항목 또는 작업으로 연결된 기기의 배터리 잔량 (0.0f~1.0f)입니다.

배터리 잔량을 쿼리하기 위해 애플리케이션은 xrGetCurrentInteractionProfile을 호출할 때 XrBatteryStateDisplayEXT 구조를 XrInteractionProfileState :: next 체인에 연결합니다.

xrGetCurrentInteractionProfile이 XrInteractionProfileState :: interactionProfile을 XR_NULL_PATH로 설정하는 경우 런타임은 stateFlags에서 XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT 비트를 설정하면 안 됩니다(MUST NOT).

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT는 batteryLevel에 유효한 데이터가 포함되어 있는지 여부를 나타냅니다. XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT 비트가 stateFlags에 설정되지 않은 경우 애플리케이션은 batteryLevel를 읽지 않아야 합니다(MUST).

올바른 사용 (암시적)

XrBatteryStateDisplayEXT :: stateFlags 멤버는 다음 유형이며 XrBatteryStateDisplayStateFlagBitsEXT에 정의된 비트 중 0개 이상의 비트별 OR을 포함합니다.

typedef XrFlags64 XrBatteryStateDisplayStateFlagsEXT;

// Flag bits for XrBatteryStateDisplayStateFlagsEXT
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT = 0x00000001;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT = 0x00000002;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT = 0x00000004;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT = 0x00000008;

플래그 비트의 의미는 다음과 같습니다.

플래그 설명

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT — XrBatteryStateDisplayEXT :: batteryLevel의 유효성을 나타냅니다.
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT: 상호작용 프로필과 연결된 기기가 충전 중임을 나타냅니다.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT: 상호작용 프로필과 연결된 기기가 전원에 연결되어 있음을 나타냅니다.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT: 상호작용 프로필과 연결된 기기에 배터리 전원이 없음을 나타냅니다.

예

// previously initialized
extern XrSession session;
extern XrPath topLevelUserPath;

XrBatteryStateDisplayEXT batteryStateDisplay{XR_TYPE_BATTERY_STATE_DISPLAY_EXT};
XrInteractionProfileState ipState{XR_TYPE_INTERACTION_PROFILE_STATE, &batteryStateDisplay};
CHK_XR(xrGetCurrentInteractionProfile(session, topLevelUserPath, &ipState));
if ((batteryStateDisplay.stateFlags & XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT) != 0) {
  // use value of batteryStateDisplay.batteryLevel
}

새로운 구조

새 enum

새 비트마스크

새 enum 상수

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • XrStructureType 확장:

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

문제

  • 애플리케이션이 이 확장 프로그램을 사용하여 헤드 마운트 기기에 표시된 배터리 잔량을 쿼리할 수 있나요?

    • 해결됨. 직접적으로는 불가능합니다 . 이 확장 프로그램은 현재 상호작용 프로필이 있는 최상위 /user 경로에 표시되는 배터리 잔량 반환만 지원합니다. 애플리케이션이 헤드 마운트 기기 ( /user/head)의 상호작용 프로필에 대한 바인딩을 제안하고 런타임이 해당 상호작용 프로필을 활성화하는 경우 런타임은 해당 최상위 /user 경로의 배터리 잔량을 반환할 수 있습니다.

버전 기록

  • 버전 1, 2025-10-21 (존 커니)

    • 초안