From 77ebd5d6de4ce7561ac7ea117c9e32739999d600 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 29 Oct 2011 18:26:01 +1300 Subject: [PATCH] removing more renderer code duplication; cleanup --- OpenRA.Renderer.Cg/GraphicsDevice.cs | 87 ++++++++--------------- OpenRA.Renderer.Gl/GraphicsDevice.cs | 70 ++++++------------ OpenRA.Renderer.SdlCommon/ErrorHandler.cs | 1 - OpenRA.Renderer.SdlCommon/SdlGraphics.cs | 29 +++++++- OpenRA.Renderer.SdlCommon/SdlInput.cs | 2 - 5 files changed, 76 insertions(+), 113 deletions(-) diff --git a/OpenRA.Renderer.Cg/GraphicsDevice.cs b/OpenRA.Renderer.Cg/GraphicsDevice.cs index afa309152d..b0e6153679 100755 --- a/OpenRA.Renderer.Cg/GraphicsDevice.cs +++ b/OpenRA.Renderer.Cg/GraphicsDevice.cs @@ -10,9 +10,6 @@ using System; using System.Drawing; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; using OpenRA.FileFormats.Graphics; using OpenRA.Renderer.SdlCommon; using Tao.Cg; @@ -27,7 +24,7 @@ namespace OpenRA.Renderer.Cg { public IGraphicsDevice Create(Size size, WindowMode windowMode) { - return new GraphicsDevice( size, windowMode ); + return new GraphicsDevice(size, windowMode); } } @@ -50,12 +47,12 @@ namespace OpenRA.Renderer.Cg throw new InvalidOperationException("CG Error. See graphics.log for details"); }; - public GraphicsDevice( Size size, WindowMode window ) + public GraphicsDevice(Size size, WindowMode window) { Console.WriteLine("Using Cg renderer"); windowSize = size; - var extensions = new string[] + var extensions = new [] { "GL_ARB_vertex_program", "GL_ARB_fragment_program", @@ -66,85 +63,59 @@ namespace OpenRA.Renderer.Cg cgContext = Tao.Cg.Cg.cgCreateContext(); - Tao.Cg.Cg.cgSetErrorCallback( CgErrorCallback ); + Tao.Cg.Cg.cgSetErrorCallback(CgErrorCallback); - Tao.Cg.CgGl.cgGLRegisterStates( cgContext ); - Tao.Cg.CgGl.cgGLSetManageTextureParameters( cgContext, true ); - vertexProfile = CgGl.cgGLGetLatestProfile( CgGl.CG_GL_VERTEX ); - fragmentProfile = CgGl.cgGLGetLatestProfile( CgGl.CG_GL_FRAGMENT ); + Tao.Cg.CgGl.cgGLRegisterStates(cgContext); + Tao.Cg.CgGl.cgGLSetManageTextureParameters(cgContext, true); + vertexProfile = CgGl.cgGLGetLatestProfile(CgGl.CG_GL_VERTEX); + fragmentProfile = CgGl.cgGLGetLatestProfile(CgGl.CG_GL_FRAGMENT); - Gl.glEnableClientState( Gl.GL_VERTEX_ARRAY ); + Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY); ErrorHandler.CheckGlError(); - Gl.glEnableClientState( Gl.GL_TEXTURE_COORD_ARRAY ); + Gl.glEnableClientState(Gl.GL_TEXTURE_COORD_ARRAY); ErrorHandler.CheckGlError(); - Sdl.SDL_SetModState( 0 ); // i have had enough. + Sdl.SDL_SetModState(0); // i have had enough. - input = new SdlInput( surf ); + input = new SdlInput(surf); } - public void EnableScissor( int left, int top, int width, int height ) + public void EnableScissor(int left, int top, int width, int height) { - if( width < 0 ) width = 0; - if( height < 0 ) height = 0; - Gl.glScissor( left, windowSize.Height - ( top + height ), width, height ); + if (width < 0) width = 0; + if (height < 0) height = 0; + + Gl.glScissor(left, windowSize.Height - ( top + height ), width, height); ErrorHandler.CheckGlError(); - Gl.glEnable( Gl.GL_SCISSOR_TEST ); + Gl.glEnable(Gl.GL_SCISSOR_TEST); ErrorHandler.CheckGlError(); } public void DisableScissor() { - Gl.glDisable( Gl.GL_SCISSOR_TEST ); + Gl.glDisable(Gl.GL_SCISSOR_TEST); ErrorHandler.CheckGlError(); } - public void Clear() + public void Clear() { SdlGraphics.Clear(); } + public void Present() { Sdl.SDL_GL_SwapBuffers(); } + public void PumpInput(IInputHandler inputHandler) { input.PumpInput(inputHandler); } + + public void DrawPrimitives(PrimitiveType pt, int firstVertex, int numVertices) { - Gl.glClearColor( 0, 0, 0, 0 ); - ErrorHandler.CheckGlError(); - Gl.glClear( Gl.GL_COLOR_BUFFER_BIT ); - ErrorHandler.CheckGlError(); + SdlGraphics.DrawPrimitives(pt, firstVertex, numVertices); } - public void Present() - { - Sdl.SDL_GL_SwapBuffers(); - } - - public void PumpInput( IInputHandler inputHandler ) - { - input.PumpInput( inputHandler ); - } - - public void DrawPrimitives( PrimitiveType pt, int firstVertex, int numVertices ) - { - Gl.glDrawArrays( ModeFromPrimitiveType( pt ), firstVertex, numVertices ); - ErrorHandler.CheckGlError(); - } - - static int ModeFromPrimitiveType( PrimitiveType pt ) - { - switch( pt ) - { - case PrimitiveType.PointList: return Gl.GL_POINTS; - case PrimitiveType.LineList: return Gl.GL_LINES; - case PrimitiveType.TriangleList: return Gl.GL_TRIANGLES; - case PrimitiveType.QuadList: return Gl.GL_QUADS; - } - throw new NotImplementedException(); - } - - public void SetLineWidth( float width ) + public void SetLineWidth(float width) { Gl.glLineWidth(width); ErrorHandler.CheckGlError(); } - public IVertexBuffer CreateVertexBuffer( int size ) { return new VertexBuffer( size ); } + public IVertexBuffer CreateVertexBuffer(int size) { return new VertexBuffer(size); } public ITexture CreateTexture() { return new Texture(); } - public ITexture CreateTexture( Bitmap bitmap ) { return new Texture( bitmap ); } - public IShader CreateShader( string name ) { return new Shader( this, name ); } + public ITexture CreateTexture(Bitmap bitmap) { return new Texture(bitmap); } + public IShader CreateShader(string name) { return new Shader(this, name); } public int GpuMemoryUsed { get { return 0; } } } diff --git a/OpenRA.Renderer.Gl/GraphicsDevice.cs b/OpenRA.Renderer.Gl/GraphicsDevice.cs index ba1689b60a..5728ddc123 100755 --- a/OpenRA.Renderer.Gl/GraphicsDevice.cs +++ b/OpenRA.Renderer.Gl/GraphicsDevice.cs @@ -9,11 +9,7 @@ #endregion using System; -using System.Diagnostics; using System.Drawing; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; using OpenRA.FileFormats.Graphics; using OpenRA.Renderer.SdlCommon; using Tao.OpenGl; @@ -27,7 +23,7 @@ namespace OpenRA.Renderer.Glsl { public IGraphicsDevice Create(Size size, WindowMode windowMode) { - return new GraphicsDevice( size, windowMode ); + return new GraphicsDevice(size, windowMode); } } @@ -39,80 +35,54 @@ namespace OpenRA.Renderer.Glsl public Size WindowSize { get { return windowSize; } } - public GraphicsDevice( Size size, WindowMode window ) + public GraphicsDevice(Size size, WindowMode window) { Console.WriteLine("Using Gl renderer"); windowSize = size; - var extensions = new string[] + var extensions = new [] { "GL_ARB_vertex_shader", "GL_ARB_fragment_shader", "GL_ARB_vertex_buffer_object", }; - surf = SdlGraphics.InitializeSdlGl( ref windowSize, window, extensions ); + surf = SdlGraphics.InitializeSdlGl(ref windowSize, window, extensions); - Gl.glEnableClientState( Gl.GL_VERTEX_ARRAY ); + Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY); ErrorHandler.CheckGlError(); - Gl.glEnableClientState( Gl.GL_TEXTURE_COORD_ARRAY ); + Gl.glEnableClientState(Gl.GL_TEXTURE_COORD_ARRAY); ErrorHandler.CheckGlError(); - Sdl.SDL_SetModState( 0 ); + Sdl.SDL_SetModState(0); - input = new SdlInput( surf ); + input = new SdlInput(surf); } - public void EnableScissor( int left, int top, int width, int height ) + public void EnableScissor(int left, int top, int width, int height) { - if( width < 0 ) width = 0; - if( height < 0 ) height = 0; - Gl.glScissor( left, windowSize.Height - ( top + height ), width, height ); + if (width < 0) width = 0; + if (height < 0) height = 0; + + Gl.glScissor(left, windowSize.Height - ( top + height ), width, height); ErrorHandler.CheckGlError(); - Gl.glEnable( Gl.GL_SCISSOR_TEST ); + Gl.glEnable(Gl.GL_SCISSOR_TEST); ErrorHandler.CheckGlError(); } public void DisableScissor() { - Gl.glDisable( Gl.GL_SCISSOR_TEST ); + Gl.glDisable(Gl.GL_SCISSOR_TEST); ErrorHandler.CheckGlError(); } - public void Clear() - { - Gl.glClearColor( 0, 0, 0, 0 ); - ErrorHandler.CheckGlError(); - Gl.glClear( Gl.GL_COLOR_BUFFER_BIT ); - ErrorHandler.CheckGlError(); - } + public void Clear() { SdlGraphics.Clear(); } + public void Present() { Sdl.SDL_GL_SwapBuffers(); } + public void PumpInput(IInputHandler inputHandler) { input.PumpInput(inputHandler); } - public void Present() + public void DrawPrimitives(PrimitiveType pt, int firstVertex, int numVertices) { - Sdl.SDL_GL_SwapBuffers(); - } - - public void PumpInput( IInputHandler inputHandler ) - { - input.PumpInput(inputHandler); - } - - public void DrawPrimitives( PrimitiveType pt, int firstVertex, int numVertices ) - { - Gl.glDrawArrays( ModeFromPrimitiveType( pt ), firstVertex, numVertices ); - ErrorHandler.CheckGlError(); - } - - static int ModeFromPrimitiveType( PrimitiveType pt ) - { - switch( pt ) - { - case PrimitiveType.PointList: return Gl.GL_POINTS; - case PrimitiveType.LineList: return Gl.GL_LINES; - case PrimitiveType.TriangleList: return Gl.GL_TRIANGLES; - case PrimitiveType.QuadList: return Gl.GL_QUADS; - } - throw new NotImplementedException(); + SdlGraphics.DrawPrimitives(pt, firstVertex, numVertices); } public void SetLineWidth( float width ) diff --git a/OpenRA.Renderer.SdlCommon/ErrorHandler.cs b/OpenRA.Renderer.SdlCommon/ErrorHandler.cs index 85f4e78dd9..3d67c88a24 100644 --- a/OpenRA.Renderer.SdlCommon/ErrorHandler.cs +++ b/OpenRA.Renderer.SdlCommon/ErrorHandler.cs @@ -11,7 +11,6 @@ using System; using System.Diagnostics; using Tao.OpenGl; -using OpenRA.FileFormats; namespace OpenRA.Renderer.SdlCommon { diff --git a/OpenRA.Renderer.SdlCommon/SdlGraphics.cs b/OpenRA.Renderer.SdlCommon/SdlGraphics.cs index 5fbb45dae4..204bb4e5d5 100644 --- a/OpenRA.Renderer.SdlCommon/SdlGraphics.cs +++ b/OpenRA.Renderer.SdlCommon/SdlGraphics.cs @@ -10,12 +10,11 @@ using System; using System.Drawing; -using System.IO; using System.Linq; using System.Runtime.InteropServices; +using OpenRA.FileFormats.Graphics; using Tao.OpenGl; using Tao.Sdl; -using OpenRA.FileFormats.Graphics; namespace OpenRA.Renderer.SdlCommon { @@ -86,6 +85,32 @@ namespace OpenRA.Renderer.SdlCommon return surf; } + + static int ModeFromPrimitiveType(PrimitiveType pt) + { + switch(pt) + { + case PrimitiveType.PointList: return Gl.GL_POINTS; + case PrimitiveType.LineList: return Gl.GL_LINES; + case PrimitiveType.TriangleList: return Gl.GL_TRIANGLES; + case PrimitiveType.QuadList: return Gl.GL_QUADS; + } + throw new NotImplementedException(); + } + + public static void DrawPrimitives(PrimitiveType pt, int firstVertex, int numVertices) + { + Gl.glDrawArrays(ModeFromPrimitiveType(pt), firstVertex, numVertices); + ErrorHandler.CheckGlError(); + } + + public static void Clear() + { + Gl.glClearColor(0, 0, 0, 0); + ErrorHandler.CheckGlError(); + Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); + ErrorHandler.CheckGlError(); + } } } diff --git a/OpenRA.Renderer.SdlCommon/SdlInput.cs b/OpenRA.Renderer.SdlCommon/SdlInput.cs index 8652c93e77..34bb61e489 100644 --- a/OpenRA.Renderer.SdlCommon/SdlInput.cs +++ b/OpenRA.Renderer.SdlCommon/SdlInput.cs @@ -9,9 +9,7 @@ #endregion using System; -using System.Drawing; using System.IO; -using Tao.OpenGl; using Tao.Sdl; namespace OpenRA.Renderer.SdlCommon