Forráskód Böngészése

Create renderer with Renderer::create() and destory it with Renderer::destroy()

Daniele Bartolini 12 éve
szülő
commit
e43e3ec409
4 módosított fájl, 17 hozzáadás és 42 törlés
  1. 2 35
      src/Device.cpp
  2. 0 7
      src/Device.h
  3. 3 0
      src/renderers/Renderer.h
  4. 12 0
      src/renderers/gl/GLRenderer.cpp

+ 2 - 35
src/Device.cpp

@@ -37,7 +37,6 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include "String.h"
 #include "Args.h"
 #include "Game.h"
-#include <cstdlib>
 #include "ArchiveResourceArchive.h"
 #include "FileResourceArchive.h"
 #include "ResourceManager.h"
@@ -48,14 +47,6 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include "Accelerometer.h"
 #include "OsWindow.h"
 
-#ifdef CROWN_BUILD_OPENGL
-	#include "renderers/gl/GLRenderer.h"
-#endif
-
-#ifdef CROWN_BUILD_OPENGLES
-	#include "renderers/gles/GLESRenderer.h"
-#endif
-
 namespace crown
 {
 
@@ -68,7 +59,6 @@ Device::Device() :
 	m_preferred_window_width(1000),
 	m_preferred_window_height(625),
 	m_preferred_window_fullscreen(0),
-	m_preferred_renderer(RENDERER_GL),
 	m_preferred_mode(MODE_RELEASE),
 
 	m_is_init(false),
@@ -213,7 +203,7 @@ void Device::shutdown()
 	{
 		m_renderer->shutdown();
 
-		delete m_renderer;
+		Renderer::destroy(m_renderer);
 	}
 
 	Log::i("Releasing Window...");
@@ -454,26 +444,7 @@ void Device::create_window()
 //-----------------------------------------------------------------------------
 void Device::create_renderer()
 {
-	// Select appropriate renderer
-	if (m_preferred_renderer == RENDERER_GL)
-	{
-		#ifdef CROWN_BUILD_OPENGL
-		m_renderer = new GLRenderer;
-		#else
-		Log::e("Crown Engine was not built with OpenGL support.");
-		exit(EXIT_FAILURE);
-		#endif
-	}
-	else if (m_preferred_renderer == RENDERER_GLES)
-	{
-		#ifdef CROWN_BUILD_OPENGLES
-		m_renderer = new GLESRenderer;
-		#else
-		Log::e("Crown Engine was not built with OpenGL|ES support.");
-		exit(EXIT_FAILURE);
-		#endif
-	}
-
+	m_renderer = Renderer::create();
 	m_renderer->init();
 }
 
@@ -495,8 +466,6 @@ bool Device::parse_command_line(int argc, char** argv)
 		"width",      AOA_REQUIRED_ARGUMENT, NULL,        'w',
 		"height",     AOA_REQUIRED_ARGUMENT, NULL,        'h',
 		"fullscreen", AOA_NO_ARGUMENT,       &m_preferred_window_fullscreen, 1,
-		"gl",         AOA_NO_ARGUMENT,       &m_preferred_renderer, RENDERER_GL,
-		"gles",       AOA_NO_ARGUMENT,       &m_preferred_renderer, RENDERER_GLES,
 		"dev",        AOA_NO_ARGUMENT,       &m_preferred_mode, MODE_DEVELOPMENT,
 		NULL, 0, NULL, 0
 	};
@@ -580,8 +549,6 @@ void Device::print_help_message()
 	"  --width <width>       Set the <width> of the render window.\n"
 	"  --height <width>      Set the <height> of the render window.\n"
 	"  --fullscreen          Start in fullscreen.\n"
-	"  --gl                  Use OpenGL as rendering backend.\n"
-	"  --gles                Use OpenGL|ES as rendering backend.\n"  
 	"  --dev                 Run the engine in development mode\n");
 }
 

+ 0 - 7
src/Device.h

@@ -128,7 +128,6 @@ private:
 	int32_t					m_preferred_window_width;
 	int32_t					m_preferred_window_height;
 	int32_t					m_preferred_window_fullscreen;
-	int32_t					m_preferred_renderer;
 	int32_t					m_preferred_mode;
 
 	char					m_preferred_root_path[MAX_PATH_LENGTH];
@@ -161,12 +160,6 @@ private:
 
 private:
 
-	enum
-	{
-		RENDERER_GL,
-		RENDERER_GLES
-	};
-
 	enum
 	{
 		MODE_RELEASE,

+ 3 - 0
src/renderers/Renderer.h

@@ -100,6 +100,9 @@ class Renderer
 {
 public:
 
+	static Renderer*		create();
+	static void				destroy(Renderer* renderer);
+
 	virtual 				~Renderer() {};
 
 	virtual void			init() = 0;

+ 12 - 0
src/renderers/gl/GLRenderer.cpp

@@ -1023,5 +1023,17 @@ GLint GLRenderer::find_gpu_program_uniform(GLuint program, const char* name) con
 	return uniform;
 }
 
+//-----------------------------------------------------------------------------
+Renderer* Renderer::create()
+{
+	return new GLRenderer;
+}
+
+//-----------------------------------------------------------------------------
+void Renderer::destroy(Renderer* renderer)
+{
+	delete renderer;
+}
+
 } // namespace crown