Method: RGSS::Texture#initialize

Defined in:
lib/rgss/texture.rb

#initialize(*args, **opts) ⇒ Texture

Returns a new instance of Texture.



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
# File 'lib/rgss/texture.rb', line 11

def initialize(*args, **opts)
  super(glGenTexture)

  image = nil
  case args.size
  when 1
    source = args.first
    image = source.is_a?(String) ? Image.new(source) : source
    raise(TypeError, "#{source} is not a String or Image") unless image.is_a?(Image)
  when 2
    image = Image.new(*args, **opts)
  else
    raise(ArgumentError, "wrong number of arguments (given #{args.size}, expected 1, 2)")
  end

  glActiveTexture(GL_TEXTURE0);
  glBindTexture(GL_TEXTURE_2D, self.id);
  
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image.width, image.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image.address);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

  @width = image.width
  @height = image.height
  image.dispose
  @fbo = 0
end