class OpenXR::Extension
An OpenXR
instance extension.
@see www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#extensions
Public Class Methods
count()
click to toggle source
@return [Integer] @raise [Result::Error] if `:xrEnumerateInstanceExtensionProperties` failed
# File lib/openxr/extension.rb, line 19 def self.count response = FFI::MemoryPointer.new(:uint32) begin # https://www.khronos.org/registry/OpenXR/specs/1.0/man/html/openxr.html#_xrenumerateinstanceextensionproperties3 case result = xrEnumerateInstanceExtensionProperties(nil, 0, response, nil) when XR_SUCCESS then response.read(:uint32) else raise OpenXR::Result.for(result).new(:xrEnumerateInstanceExtensionProperties) end ensure response&.free end end
each(&block)
click to toggle source
@yield [extension] @return [Enumerator]
# File lib/openxr/extension.rb, line 35 def self.each(&block) return self.to_enum(:each) unless block_given? self.list.each(&block) end
list()
click to toggle source
@return [Array<Extension>]
# File lib/openxr/extension.rb, line 42 def self.list self.query.values end
query()
click to toggle source
@return [Hash<Symbol, Extension>] @raise [Result::Error] if `:xrEnumerateInstanceExtensionProperties` failed
# File lib/openxr/extension.rb, line 49 def self.query request_count = self.count response_count = FFI::MemoryPointer.new(:uint32) response_array = FFI::MemoryPointer.new(XrExtensionProperties, request_count) begin request_count.times do |i| XrExtensionProperties.new(response_array[i]).set_type! end # https://www.khronos.org/registry/OpenXR/specs/1.0/man/html/openxr.html#_xrenumerateinstanceextensionproperties3 case result = xrEnumerateInstanceExtensionProperties(nil, request_count, response_count, response_array) when XR_SUCCESS response_count.read(:uint32).times.inject({}) do |available, i| response = XrExtensionProperties.new(response_array[i]) extension_name = response[:extensionName].to_s.to_sym extension_version = response[:extensionVersion] available[extension_name] = self.new(extension_name, extension_version) available end else raise OpenXR::Result.for(result).new(:xrEnumerateInstanceExtensionProperties) end ensure response_array&.free response_count&.free end end