OpenXRAPIExtension

Наследует: RefCounted < Object

Делает API OpenXR доступным для GDExtension.

Описание

OpenXRAPIExtension делает OpenXR доступным для GDExtension. Он предоставляет API OpenXR для GDExtension через метод get_instance_proc_addr() и экземпляр OpenXR через get_instance().

Он также предоставляет методы для запроса статуса инициализации OpenXR и вспомогательные методы для простоты использования API с GDExtension.

Обучающие материалы

Методы

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_openxr_version()

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: OpenXRExtensionWrapper)

void

register_frame_info_extension(extension: OpenXRExtensionWrapper)

void

register_projection_views_extension(extension: OpenXRExtensionWrapper)

void

set_custom_play_space(space: const void*)

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: OpenXRExtensionWrapper)

void

unregister_frame_info_extension(extension: OpenXRExtensionWrapper)

void

unregister_projection_views_extension(extension: OpenXRExtensionWrapper)

void

update_main_swapchain_size()

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) 🔗

Возвращает соответствующий дескриптор OpenXR XrAction для указанного RID действия.


void begin_debug_label_region(label_name: String) 🔗

Начинает новую область отладочной метки, эта метка будет сообщаться в отладочных сообщениях для любых вызовов, следующих за этим, пока не будет вызван end_debug_label_region(). Отладочные метки могут быть сложены.


bool can_render() 🔗

Возвращает true, если OpenXR инициализирован для рендеринга с областью просмотра XR.


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() 🔗

Возвращает XrInstance, созданный во время инициализации API OpenXR.


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_openxr_version() 🔗

Возвращает версию OpenXR, которая была инициализирована. Действительна только после создания экземпляра OpenXR. См. XR_MAKE_VERSION для получения информации о том, как рассчитывается версия.


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() 🔗

Возвращает true, если OpenXR инициализирован.


bool is_running() 🔗

Возвращает true, если OpenXR запущен (xrBeginSession был успешно вызван и цепочки обмена были созданы).


bool openxr_is_enabled(check_run_in_editor: bool) static 🔗

Возвращает true, если OpenXR включен.


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: OpenXRExtensionWrapper) 🔗

Регистрирует указанное расширение в качестве поставщика слоя композиции.

Примечание: Этот метод нельзя вызвать после начала сессии OpenXR. Однако его можно вызвать в OpenXRExtensionWrapper._on_session_created().


void register_frame_info_extension(extension: OpenXRExtensionWrapper) 🔗

Регистрирует указанное расширение как изменяющее информацию о кадре с помощью виртуальных методов OpenXRExtensionWrapper._set_frame_wait_info_and_get_next_pointer(), OpenXRExtensionWrapper._set_view_locate_info_and_get_next_pointer() или OpenXRExtensionWrapper._set_frame_end_info_and_get_next_pointer().

Примечание: Этот метод нельзя вызвать после начала сеанса OpenXR. Однако его можно вызвать в OpenXRExtensionWrapper._on_session_created().


void register_projection_views_extension(extension: OpenXRExtensionWrapper) 🔗

Регистрирует указанное расширение в качестве поставщика дополнительных структур данных для проекционных представлений.

Примечание: Этот метод нельзя вызвать после начала сеанса OpenXR. Однако его можно вызвать в OpenXRExtensionWrapper._on_session_created().


void set_custom_play_space(space: const void*) 🔗

Устанавливает ссылочное пространство, используемое OpenXR, на указанное XrSpace (приводится к void *).


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*) 🔗

Создает Transform3D из XrPosef.


void unregister_composition_layer_provider(extension: OpenXRExtensionWrapper) 🔗

Отменяет регистрацию указанного расширения в качестве поставщика слоя композиции.

Примечание: Эту функцию нельзя вызвать, пока сессия OpenXR еще запущена.


void unregister_frame_info_extension(extension: OpenXRExtensionWrapper) 🔗

Отменяет регистрацию указанного расширения как изменяющего информацию о кадре.

Примечание: Эту функцию нельзя вызвать, пока сессия OpenXR еще запущена.


void unregister_projection_views_extension(extension: OpenXRExtensionWrapper) 🔗

Отменяет регистрацию указанного расширения в качестве поставщика дополнительных структур данных для проекционных представлений.

Примечание: Эту функцию нельзя вызвать, пока сеанс OpenXR еще запущен.


void update_main_swapchain_size() 🔗

Запросите рекомендуемое разрешение у среды выполнения OpenXR и обновите размер основной цепочки обменов, если он изменился.


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

Возвращает true, если предоставленный XrResult (приведенный к целому числу) успешен. В противном случае возвращает false и печатает XrResult, преобразованный в строку, с указанной дополнительной информацией.