Class: OpenXR::Instance
- Includes:
- API
- Defined in:
- lib/openxr/instance.rb
Overview
An OpenXR instance handle.
Constant Summary
Constants included from ABI
ABI::XR_CURRENT_API_VERSION, ABI::XR_ERROR_HANDLE_INVALID, ABI::XR_ERROR_RUNTIME_FAILURE, ABI::XR_ERROR_VALIDATION_FAILURE, ABI::XR_FALSE, ABI::XR_FORM_FACTOR_HANDHELD_DISPLAY, ABI::XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY, ABI::XR_FORM_FACTOR_MAX_ENUM, ABI::XR_MAX_ACTION_NAME_SIZE, ABI::XR_MAX_ACTION_SET_NAME_SIZE, ABI::XR_MAX_API_LAYER_DESCRIPTION_SIZE, ABI::XR_MAX_API_LAYER_NAME_SIZE, ABI::XR_MAX_APPLICATION_NAME_SIZE, ABI::XR_MAX_ENGINE_NAME_SIZE, ABI::XR_MAX_EXTENSION_NAME_SIZE, ABI::XR_MAX_LOCALIZED_ACTION_NAME_SIZE, ABI::XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE, ABI::XR_MAX_PATH_LENGTH, ABI::XR_MAX_RESULT_STRING_SIZE, ABI::XR_MAX_RUNTIME_NAME_SIZE, ABI::XR_MAX_STRUCTURE_NAME_SIZE, ABI::XR_MAX_SYSTEM_NAME_SIZE, ABI::XR_MIN_COMPOSITION_LAYERS_SUPPORTED, ABI::XR_SUCCESS, ABI::XR_TRUE, ABI::XR_TYPE_API_LAYER_PROPERTIES, ABI::XR_TYPE_EXTENSION_PROPERTIES, ABI::XR_TYPE_INSTANCE_CREATE_INFO, ABI::XR_TYPE_SESSION_CREATE_INFO, ABI::XR_TYPE_SYSTEM_GET_INFO, ABI::XR_TYPE_SYSTEM_PROPERTIES, ABI::XR_TYPE_UNKNOWN, ABI::XR_TYPE_VIEW, ABI::XR_TYPE_VIEW_LOCATE_INFO, ABI::XrBaseInStructure, ABI::XrBaseOutStructure, ABI::XrBool32, ABI::XrDuration, ABI::XrFlags64, ABI::XrFormFactor, ABI::XrInstanceCreateFlags, ABI::XrPath, ABI::XrResult, ABI::XrSessionCreateFlags, ABI::XrStructureType, ABI::XrSystemId, ABI::XrTime, ABI::XrVersion
Class Method Summary collapse
Instance Method Summary collapse
- #destroy! ⇒ void
- #handle ⇒ FFI::Pointer
-
#initialize(app_name, app_version: nil, api_version: nil) ⇒ Instance
constructor
A new instance of Instance.
Methods included from ABI
Constructor Details
#initialize(app_name, app_version: nil, api_version: nil) ⇒ Instance
Returns a new instance of Instance.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/openxr/instance.rb', line 33 def initialize(app_name, app_version: nil, api_version: nil) @struct = XrInstance.new request = XrInstanceCreateInfo.new request[:base][:type] = XR_TYPE_INSTANCE_CREATE_INFO request[:base][:next] = nil request[:createFlags] = 0 request[:applicationInfo][:applicationName] = app_name.to_s request[:applicationInfo][:applicationVersion] = (app_version || 0).to_i request[:applicationInfo][:engineName] = "OpenXR.rb" request[:applicationInfo][:engineVersion] = 0 request[:applicationInfo][:apiVersion] = (api_version || XR_CURRENT_API_VERSION).to_i # https://www.khronos.org/registry/OpenXR/specs/1.0/man/html/openxr.html#_xrcreateinstance3 case result = xrCreateInstance(request, @struct) when XR_SUCCESS else raise OpenXR::Result.new(result, :xrCreateInstance) # TODO end end |
Class Method Details
.create(app_name, app_version: nil, api_version: nil) {|instance| ... } ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/openxr/instance.rb', line 20 def self.create(app_name, app_version: nil, api_version: nil, &block) instance = self.new(app_name, app_version: app_version, api_version: api_version) begin block.call(instance) if block_given? ensure instance&.destroy! end end |
Instance Method Details
#destroy! ⇒ void
This method returns an undefined value.
61 62 63 64 65 66 67 68 69 |
# File 'lib/openxr/instance.rb', line 61 def destroy! return if @struct.nil? # https://www.khronos.org/registry/OpenXR/specs/1.0/man/html/openxr.html#_xrdestroyinstance3 case result = xrDestroyInstance(@struct[:handle]) when XR_SUCCESS then @struct = nil when XR_ERROR_HANDLE_INVALID then raise OpenXR::Result::HandleInvalid.new(:xrDestroyInstance) else raise OpenXR::Result.new(result, :xrDestroyInstance) # unreachable end end |
#handle ⇒ FFI::Pointer
55 56 57 |
# File 'lib/openxr/instance.rb', line 55 def handle @struct[:handle] end |