Class: Vulkan::Sampler

Inherits:
Object
  • Object
show all
Includes:
Checks, Conversions, Finalizer
Defined in:
lib/vulkan/sampler.rb

Constant Summary

Constants included from Conversions

Conversions::ACCESS_MASK_BITS, Conversions::BORDER_COLORS, Conversions::BUFFER_USAGE_BITS, Conversions::COMPARE_OPS, Conversions::DEPENDENCY_FLAG_BITS, Conversions::DESCRIPTOR_TYPES, Conversions::DYNAMIC_STATES, Conversions::FILTERS, Conversions::FORMAT_FEATURE_BITS, Conversions::IMAGE_ASPECT_BITS, Conversions::IMAGE_CREATE_BITS, Conversions::IMAGE_FORMATS, Conversions::IMAGE_TILING, Conversions::IMAGE_TYPES, Conversions::IMAGE_USAGE_BITS, Conversions::MEMORY_PROPERTIES, Conversions::PIPELINE_STAGE_BITS, Conversions::PRESENT_MODES, Conversions::SAMPLER_ADDRESS_MODES, Conversions::SAMPLER_MIPMAP_MODES, Conversions::SHADER_STAGE_BITS, Conversions::SHARING_MODES, Conversions::SURFACE_TRANSFORMS, Conversions::VERTEX_INPUT_RATES

Instance Method Summary collapse

Methods included from Finalizer

#finalize_with, #hexaddr, included, #to_ptr

Methods included from Conversions

#array_of_pointers, #array_of_structures, #array_of_uint32s, #bool_to_vk, #buffer_usage_flags_to_syms, #const_to_symbol, #cstr_to_rbstr, #flags_to_symbols, #flags_to_syms, #num_to_samples, #present_mode_to_sym, #queue_family_to_index, #struct_to_hash, #sym_to_blend_factor, #sym_to_blend_op, #sym_to_border_color, #sym_to_color_component_bit, #sym_to_command_buffer_level, #sym_to_command_buffer_usage, #sym_to_compare_op, #sym_to_cull_mode, #sym_to_descriptor_type, #sym_to_dynamic_state, #sym_to_filter, #sym_to_front_face, #sym_to_image_format, #sym_to_image_layout, #sym_to_image_tiling, #sym_to_image_type, #sym_to_index_type, #sym_to_load_op, #sym_to_pipeline_bind_point, #sym_to_polygon_mode, #sym_to_present_mode, #sym_to_sampler_address_mode, #sym_to_sampler_mipmap_mode, #sym_to_samples, #sym_to_sharing_mode, #sym_to_store_op, #sym_to_subpass_contents, #sym_to_topology, #sym_to_val, #sym_to_vertex_input_rate, #syms_to_access_mask, #syms_to_buffer_usage_flags, #syms_to_dependency_flags, #syms_to_descriptor_set_layout_type_flags, #syms_to_flags, #syms_to_format_feature_flags, #syms_to_image_aspect_flags, #syms_to_image_create_flags, #syms_to_image_usage_flags, #syms_to_memory_properties, #syms_to_pipeline_stage_flags, #syms_to_shader_stage_flags, #syms_to_surface_transforms, #vk_make_version, #vk_parse_version

Methods included from Checks

#check_result

Constructor Details

#initialize(vk, device, mag_filter: :linear, min_filter: :linear, address_mode_u: :repeat, address_mode_v: :repeat, address_mode_w: :repeat, anisotropy: device.feature_enabled?(:sampler_anisotropy), max_anisotropy: anisotropy ? 16 : 1, border_color: :int_opaque_black, unnormalized_coords: false, compare: false, compare_op: :always, mipmap_mode: :linear, mip_lod_bias: 0, min_lod: 0, max_lod: 0) ⇒ Sampler

Returns a new instance of Sampler.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/vulkan/sampler.rb', line 7

def initialize(vk, device,
                   mag_filter: :linear,
                   min_filter: :linear,
                   address_mode_u: :repeat,
                   address_mode_v: :repeat,
                   address_mode_w: :repeat,
                   anisotropy: device.feature_enabled?(:sampler_anisotropy),
                   max_anisotropy: anisotropy ? 16 : 1,
                   border_color: :int_opaque_black,
                   unnormalized_coords: false,
                   compare: false,
                   compare_op: :always,
                   mipmap_mode: :linear,
                   mip_lod_bias: 0,
                   min_lod: 0,
                   max_lod: 0
              )
  sampler_info = VkSamplerCreateInfo.malloc
  sampler_info.sType                   = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
  sampler_info.magFilter               = sym_to_filter(mag_filter)
  sampler_info.minFilter               = sym_to_filter(min_filter)
  sampler_info.addressModeU            = sym_to_sampler_address_mode(address_mode_u)
  sampler_info.addressModeV            = sym_to_sampler_address_mode(address_mode_v)
  sampler_info.addressModeW            = sym_to_sampler_address_mode(address_mode_w)
  sampler_info.anisotropyEnable        = bool_to_vk(anisotropy)
  sampler_info.maxAnisotropy           = max_anisotropy
  sampler_info.borderColor             = sym_to_border_color(border_color)
  sampler_info.unnormalizedCoordinates = bool_to_vk(unnormalized_coords)
  sampler_info.compareEnable           = bool_to_vk(compare)
  sampler_info.compareOp               = sym_to_compare_op(compare_op)
  sampler_info.mipmapMode              = sym_to_sampler_mipmap_mode(mipmap_mode)
  sampler_info.mipLodBias              = mip_lod_bias
  sampler_info.minLod                  = min_lod
  sampler_info.maxLod                  = max_lod

  handle_p = Vulkan.create_value('void *', nil)
  check_result vk.vkCreateSampler(vk.device, sampler_info, nil, handle_p)
  @handle = handle_p.value
  finalize_with vk, :vkDestroySampler, vk.device, @handle, nil
end