Module: Rendering::UI::StencilManager
- Defined in:
- lib/engine/rendering/ui/stencil_manager.rb
Class Method Summary collapse
Class Method Details
.reset ⇒ Object
27 28 29 30 |
# File 'lib/engine/rendering/ui/stencil_manager.rb', line 27 def reset Engine::GL.Disable(Engine::GL::STENCIL_TEST) @current_chain = nil end |
.setup_for_rect(rect) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/engine/rendering/ui/stencil_manager.rb', line 7 def setup_for_rect(rect) chain = rect.ancestor_masks if chain.empty? Engine::GL.Disable(Engine::GL::STENCIL_TEST) return end # Rebuild stencil if chain changed if chain != @current_chain rebuild_stencil(chain) @current_chain = chain end # Configure stencil test: only draw where stencil == chain.length (intersection of all masks) Engine::GL.Enable(Engine::GL::STENCIL_TEST) Engine::GL.StencilFunc(Engine::GL::EQUAL, chain.length, 0xFF) Engine::GL.StencilOp(Engine::GL::KEEP, Engine::GL::KEEP, Engine::GL::KEEP) end |