Module: Texel::GL
- Defined in:
- lib/texel/gl.rb
Defined Under Namespace
Classes: Format
Constant Summary collapse
- CHANNEL_FORMATS =
{ 1 => :red, 2 => :rg, 3 => :rgb, 4 => :rgba }.freeze
- INTERNAL_FORMATS =
{ u8: { 1 => :r8, 2 => :rg8, 3 => :rgb8, 4 => :rgba8 }, u16: { 1 => :r16, 2 => :rg16, 3 => :rgb16, 4 => :rgba16 }, f32: { 1 => :r32f, 2 => :rg32f, 3 => :rgb32f, 4 => :rgba32f } }.freeze
- TYPES =
{ u8: :unsigned_byte, u16: :unsigned_short, f32: :float }.freeze
Class Method Summary collapse
Class Method Details
.format(image) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/texel/gl.rb', line 23 def format(image) raise FormatError, "expected a Texel::Image" unless image.is_a?(Image) internal = INTERNAL_FORMATS.fetch(image.dtype).fetch(image.channels) internal = :srgb8 if image.dtype == :u8 && image.color_space == :srgb && image.channels == 3 internal = :srgb8_alpha8 if image.dtype == :u8 && image.color_space == :srgb && image.channels == 4 Format.new( internal_format: internal, format: CHANNEL_FORMATS.fetch(image.channels), type: TYPES.fetch(image.dtype) ).freeze end |