mirror of
https://github.com/cyberarm/cyberarm_engine.git
synced 2025-12-16 13:12:34 +00:00
Added Shader.delete, shaders now clean up after themselves
This commit is contained in:
@@ -13,6 +13,21 @@ module CyberarmEngine
|
|||||||
@@shaders[name] = instance
|
@@shaders[name] = instance
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# removes {Shader} from cache and cleans up
|
||||||
|
#
|
||||||
|
# @param name [String]
|
||||||
|
def self.delete(name)
|
||||||
|
shader = @@shaders.dig(name)
|
||||||
|
|
||||||
|
if shader
|
||||||
|
@@shaders.delete(name)
|
||||||
|
|
||||||
|
if shader.compiled?
|
||||||
|
glDeleteProgram(shader.program)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# runs _block_ using {Shader} with _name_
|
# runs _block_ using {Shader} with _name_
|
||||||
#
|
#
|
||||||
@@ -118,12 +133,15 @@ module CyberarmEngine
|
|||||||
compile_shader(type: :fragment)
|
compile_shader(type: :fragment)
|
||||||
link_shaders
|
link_shaders
|
||||||
|
|
||||||
|
@data[:shaders].each { |key, id| glDeleteShader(id) }
|
||||||
|
|
||||||
# Only add shader if it successfully compiles
|
# Only add shader if it successfully compiles
|
||||||
if @compiled
|
if @compiled
|
||||||
puts "compiled!"
|
puts "compiled!"
|
||||||
puts "Compiled shader: #{@name}"
|
puts "Compiled shader: #{@name}"
|
||||||
Shader.add(@name, self)
|
Shader.add(@name, self)
|
||||||
else
|
else
|
||||||
|
glDeleteProgram(@program)
|
||||||
warn "FAILED to compile shader: #{@name}", ""
|
warn "FAILED to compile shader: #{@name}", ""
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user