Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

OpenXRAPIExtension

继承: RefCounted < Object

为 GDExtension 提供 OpenXR API。

描述

OpenXRAPIExtension 使 OpenXR 可用于 GDExtension。它通过 get_instance_proc_addr() 方法向 GDExtension 提供 OpenXR API,并通过 get_instance() 提供 OpenXR 实例。

它还提供了用于查询 OpenXR 初始化状态的方法,以及便于通过 GDExtension 使用 API 的辅助方法。

教程

方法

int

action_get_handle(action: RID)

void

begin_debug_label_region(label_name: String)

bool

can_render()

void

end_debug_label_region()

RID

find_action(name: String, action_set: RID)

String

get_error_string(result: int)

int

get_hand_tracker(hand_index: int)

int

get_instance()

int

get_instance_proc_addr(name: String)

int

get_next_frame_time()

int

get_play_space()

int

get_predicted_display_time()

int

get_projection_layer()

float

get_render_state_z_far()

float

get_render_state_z_near()

int

get_session()

PackedInt64Array

get_supported_swapchain_formats()

String

get_swapchain_format_name(swapchain_format: int)

int

get_system_id()

void

insert_debug_label(label_name: String)

OpenXRAlphaBlendModeSupport

is_environment_blend_mode_alpha_supported()

bool

is_initialized()

bool

is_running()

bool

openxr_is_enabled(check_run_in_editor: bool) static

void

openxr_swapchain_acquire(swapchain: int)

int

openxr_swapchain_create(create_flags: int, usage_flags: int, swapchain_format: int, width: int, height: int, sample_count: int, array_size: int)

void

openxr_swapchain_free(swapchain: int)

RID

openxr_swapchain_get_image(swapchain: int)

int

openxr_swapchain_get_swapchain(swapchain: int)

void

openxr_swapchain_release(swapchain: int)

void

register_composition_layer_provider(extension: OpenXRExtensionWrapperExtension)

void

register_projection_views_extension(extension: OpenXRExtensionWrapperExtension)

void

set_emulate_environment_blend_mode_alpha_blend(enabled: bool)

void

set_object_name(object_type: int, object_handle: int, object_name: String)

void

set_render_region(render_region: Rect2i)

void

set_velocity_depth_texture(render_target: RID)

void

set_velocity_target_size(target_size: Vector2i)

void

set_velocity_texture(render_target: RID)

Transform3D

transform_from_pose(pose: const void*)

void

unregister_composition_layer_provider(extension: OpenXRExtensionWrapperExtension)

void

unregister_projection_views_extension(extension: OpenXRExtensionWrapperExtension)

bool

xr_result(result: int, format: String, args: Array)


枚举

enum OpenXRAlphaBlendModeSupport: 🔗

OpenXRAlphaBlendModeSupport OPENXR_ALPHA_BLEND_MODE_SUPPORT_NONE = 0

表示完全不支持 XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND

OpenXRAlphaBlendModeSupport OPENXR_ALPHA_BLEND_MODE_SUPPORT_REAL = 1

表示确实支持 XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND

OpenXRAlphaBlendModeSupport OPENXR_ALPHA_BLEND_MODE_SUPPORT_EMULATING = 2

表示模拟 XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND


方法说明

int action_get_handle(action: RID) 🔗

返回与给定动作 RID 对应的 XrAction OpenXR 句柄。


void begin_debug_label_region(label_name: String) 🔗

开启新的调试标签区域,此后的调用所产生的调试信息中会汇报该标签,直到调用 end_debug_label_region()。可以堆叠调试标签。


bool can_render() 🔗

如果 OpenXR 已为使用 XR 视口进行渲染而初始化,则返回 true


void end_debug_label_region() 🔗

标记调试标签区域的末尾。移除最新的通过调用 begin_debug_label_region() 添加的调试标签区域。


RID find_action(name: String, action_set: RID) 🔗

返回与名称匹配的动作所对应的 RID,还可以将匹配范围限制在指定的动作集中。


String get_error_string(result: int) 🔗

返回给定 XrResult 对应的错误字符串。


int get_hand_tracker(hand_index: int) 🔗

返回给定手索引值的相应 XRHandTrackerEXT 句柄。


int get_instance() 🔗

返回 OpenXR API 初始化过程中创建的 XrInstance


int get_instance_proc_addr(name: String) 🔗

返回具有指定名称的 OpenXR 函数的函数指针,转换为整数。如果给定名称的函数不存在,该方法返回 0

注意:openxr/util.h 包含用于获取 OpenXR 函数的实用宏,例如, GDEXTENSION_INIT_XR_FUNC_V(xrCreateAction)


int get_next_frame_time() 🔗

返回下一帧的预测显示时间。


int get_play_space() 🔗

返回播放空间,它是一个被转换为整数的 XrSpace


int get_predicted_display_time() 🔗

返回当前帧的预测显示时间。


int get_projection_layer() 🔗

返回指向渲染状态中 XrCompositionLayerProjection 结构体的指针。

注意:该方法只应从渲染线程调用。


float get_render_state_z_far() 🔗

返回相机视锥的远端边界值。

注意:只能在渲染线程中访问。


float get_render_state_z_near() 🔗

返回相机视锥的近端边界值。

注意:只能在渲染线程中访问。


int get_session() 🔗

返回该 OpenXR 会话,它是一个被转换为整数的 XrSession


PackedInt64Array get_supported_swapchain_formats() 🔗

返回支持的交换链格式的数组。


String get_swapchain_format_name(swapchain_format: int) 🔗

返回指定交换链格式的名称。


int get_system_id() 🔗

返回系统的 id,它是一个被转换为整数的 XrSystemId


void insert_debug_label(label_name: String) 🔗

插入调试标签,此后的 OpenXR 调用所产生的调试信息中会汇报该标签,直到调用 begin_debug_label_region()end_debug_label_region()insert_debug_label()


OpenXRAlphaBlendModeSupport is_environment_blend_mode_alpha_supported() 🔗

返回 OpenXRAlphaBlendModeSupport 表示 XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND 是否确实受支持、模拟或根本不支持。


bool is_initialized() 🔗

如果 OpenXR 已初始化,则返回 true


bool is_running() 🔗

如果 OpenXR 正在运行,则返回 truexrBeginSession 已被成功调用并且交换链已被创建)。


bool openxr_is_enabled(check_run_in_editor: bool) static 🔗

如果启用 OpenXR,则返回 true


void openxr_swapchain_acquire(swapchain: int) 🔗

获取给定交换链的图像。


int openxr_swapchain_create(create_flags: int, usage_flags: int, swapchain_format: int, width: int, height: int, sample_count: int, array_size: int) 🔗

返回一个指针,指向使用给定参数创建的新交换链。


void openxr_swapchain_free(swapchain: int) 🔗

销毁给定的交换链并在内存中将其释放。


RID openxr_swapchain_get_image(swapchain: int) 🔗

返回给定交换链图像的 RID。


int openxr_swapchain_get_swapchain(swapchain: int) 🔗

返回给定交换链的 XrSwapchain 句柄。


void openxr_swapchain_release(swapchain: int) 🔗

释放给定交换链的图像。


void register_composition_layer_provider(extension: OpenXRExtensionWrapperExtension) 🔗

将给定扩展注册为组合层提供器。


void register_projection_views_extension(extension: OpenXRExtensionWrapperExtension) 🔗

将给定的扩展注册为投影视图的附加数据结构提供器。


void set_emulate_environment_blend_mode_alpha_blend(enabled: bool) 🔗

如果设置为 true,则会加载 OpenXR 扩展,该扩展能够模拟 XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND 混合模式。


void set_object_name(object_type: int, object_handle: int, object_name: String) 🔗

设置 OpenXR 对象的对象名称,用于调试输出。object_type 必须是有效的 OpenXR XrObjectType 枚举,object_handle 必须是有效的 OpenXR 对象句柄。


void set_render_region(render_region: Rect2i) 🔗

将渲染区域设置为 render_region,覆盖常规渲染目标的矩形区域。


void set_velocity_depth_texture(render_target: RID) 🔗

设置速度深度纹理的渲染目标。


void set_velocity_target_size(target_size: Vector2i) 🔗

设置速度纹理和速度深度纹理的目标大小。


void set_velocity_texture(render_target: RID) 🔗

设置速度纹理的渲染目标。


Transform3D transform_from_pose(pose: const void*) 🔗

XrPosef 创建一个 Transform3D


void unregister_composition_layer_provider(extension: OpenXRExtensionWrapperExtension) 🔗

将给定的扩展取消注册为合成层提供器。


void unregister_projection_views_extension(extension: OpenXRExtensionWrapperExtension) 🔗

将给定的扩展取消注册为投影视图的附加数据结构提供器。


bool xr_result(result: int, format: String, args: Array) 🔗

如果提供的 XrResult(转换为整数)是成功的,则返回 true。否则返回 false 并打印被转换为字符串的 XrResult ,以及指定的附加信息。