From 057ae36d6992a4c5d435a96e35ff7f027fb7c44a Mon Sep 17 00:00:00 2001 From: James Gray Date: Tue, 20 Jan 2015 00:46:13 -0600 Subject: [PATCH] add ConsoleRenderContext --- lime/_backend/native/NativeRenderer.hx | 15 ++++++-- lime/graphics/ConsoleRenderContext.hx | 50 ++++++++++++++++++++++++++ lime/graphics/RenderContext.hx | 5 +-- 3 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 lime/graphics/ConsoleRenderContext.hx diff --git a/lime/_backend/native/NativeRenderer.hx b/lime/_backend/native/NativeRenderer.hx index d1bed85e6..ad0534018 100644 --- a/lime/_backend/native/NativeRenderer.hx +++ b/lime/_backend/native/NativeRenderer.hx @@ -3,6 +3,7 @@ package lime._backend.native; import lime.app.Application; import lime.graphics.opengl.GL; +import lime.graphics.ConsoleRenderContext; import lime.graphics.GLRenderContext; import lime.graphics.RenderContext; import lime.graphics.Renderer; @@ -36,7 +37,11 @@ class NativeRenderer { handle = lime_renderer_create (parent.window.backend.handle); - parent.context = OPENGL (new GLRenderContext ()); + #if lime_console + parent.context = CONSOLE (new ConsoleRenderContext ()); + #else + parent.context = OPENGL (new GLRenderContext ()); + #end if (!registered) { @@ -75,7 +80,11 @@ class NativeRenderer { case RENDER_CONTEXT_RESTORED: - parent.context = OPENGL (new GLRenderContext ()); + #if lime_console + parent.context = CONSOLE (new ConsoleRenderContext ()); + #else + parent.context = OPENGL (new GLRenderContext ()); + #end Renderer.onRenderContextRestored.dispatch (parent.context); @@ -154,4 +163,4 @@ private class RenderEventInfo { var RENDER_CONTEXT_LOST = 1; var RENDER_CONTEXT_RESTORED = 2; -} \ No newline at end of file +} diff --git a/lime/graphics/ConsoleRenderContext.hx b/lime/graphics/ConsoleRenderContext.hx new file mode 100644 index 000000000..c87ce3627 --- /dev/null +++ b/lime/graphics/ConsoleRenderContext.hx @@ -0,0 +1,50 @@ +package lime.graphics; + + +import lime.system.System; + + +class ConsoleRenderContext { +#if lime_console + + + public function new () { + + + + } + + + // setClearRGBA sets the RGBA color of a subsequent clear() call. + public inline function setClearRGBA (red:Float, green:Float, blue:Float, alpha:Float):Void { + + lime_console_render_set_clear_color (red, green, blue, alpha); + + } + + + // setClearDepthStencil sets the depth and stencil values for a subsequent clear() call. + public inline function setClearDepthStencil (depth:Float, stencil:Int):Void { + + lime_console_render_set_clear_depth_stencil (depth, stencil); + + } + + + // clear fills the current color and/or depth-stencil values of the buffer, + // specified by the preceding setClear calls. + public inline function clear ():Void { + + lime_console_render_clear (); + + } + + + private static var lime_console_render_set_clear_color = System.load ("lime", "lime_console_render_set_clear_color", 4); + private static var lime_console_render_set_clear_depth_stencil = System.load ("lime", "lime_console_render_set_clear_depth_stencil", 2); + private static var lime_console_render_clear = System.load ("lime", "lime_console_render_clear", 0); + + +#end +} + diff --git a/lime/graphics/RenderContext.hx b/lime/graphics/RenderContext.hx index c1b20b9aa..8e1904241 100644 --- a/lime/graphics/RenderContext.hx +++ b/lime/graphics/RenderContext.hx @@ -2,17 +2,18 @@ package lime.graphics; import lime.graphics.CanvasRenderContext; +import lime.graphics.ConsoleRenderContext; import lime.graphics.DOMRenderContext; import lime.graphics.FlashRenderContext; import lime.graphics.GLRenderContext; - enum RenderContext { OPENGL (gl:GLRenderContext); CANVAS (context:CanvasRenderContext); DOM (element:DOMRenderContext); FLASH (stage:FlashRenderContext); + CONSOLE (context:ConsoleRenderContext); CUSTOM (data:Dynamic); -} \ No newline at end of file +}