2
0
Marko Pintera 13 жил өмнө
parent
commit
7f49bdd956

+ 2 - 2
CamelotClient/CamelotClient.cpp

@@ -13,8 +13,8 @@ using namespace CamelotEngine;
 
 int _tmain(int argc, _TCHAR* argv[])
 {
-	//gApplication().startUp("CamelotGLRenderer");
-	gApplication().startUp("CamelotD3D9Renderer");
+	//gApplication().startUp("CamelotGLRenderSystem");
+	gApplication().startUp("CamelotD3D9RenderSystem", "CamelotForwardRenderer");
 
 	//RTTITypeBase* st = DbgSrlzTest::getRTTIStatic();
 

+ 1 - 0
CamelotD3D9Renderer/CamelotD3D9Renderer.vcxproj

@@ -13,6 +13,7 @@
   <PropertyGroup Label="Globals">
     <ProjectGuid>{796B6DFF-BA04-42B7-A43A-2B14D707A33A}</ProjectGuid>
     <RootNamespace>CamelotD3D9Renderer</RootNamespace>
+    <ProjectName>CamelotD3D9RenderSystem</ProjectName>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

+ 92 - 0
CamelotForwardRenderer/CamelotForwardRenderer.vcxproj

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}</ProjectGuid>
+    <RootNamespace>CamelotForwardRenderer</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>..\bin\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>..\bin\$(Configuration)\</OutDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../CamelotRenderer/Include;../CamelotUtility/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>CM_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalLibraryDirectories>../lib/$(Configuration);../Dependencies/lib/Debug</AdditionalLibraryDirectories>
+      <AdditionalDependencies>CamelotRenderer.lib;CamelotUtility.lib;libboost_signals-vc110-mt-gd-1_49.lib</AdditionalDependencies>
+      <ImportLibrary>..\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../CamelotRenderer/Include;../CamelotUtility/Include;./Include;../Dependencies/Include</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>CM_FWDRND_EXPORTS;_WINDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalLibraryDirectories>../lib/$(Configuration);../Dependencies/lib/Release</AdditionalLibraryDirectories>
+      <AdditionalDependencies>CamelotRenderer.lib;CamelotUtility.lib;libboost_signals-vc110-mt-1_49.lib</AdditionalDependencies>
+      <ImportLibrary>..\lib\$(Configuration)\$(TargetName).lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="Include\CmForwardRenderer.h" />
+    <ClInclude Include="Include\CmForwardRendererFactory.h" />
+    <ClInclude Include="Include\CmForwardRendererPrerequisites.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="Source\CmForwardRenderer.cpp" />
+    <ClCompile Include="Source\CmForwardRendererFactory.cpp" />
+    <ClCompile Include="Source\CmForwardRendererPlugin.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 39 - 0
CamelotForwardRenderer/CamelotForwardRenderer.vcxproj.filters

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="Include\CmForwardRendererFactory.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\CmForwardRendererPrerequisites.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\CmForwardRenderer.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="Source\CmForwardRendererFactory.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Source\CmForwardRenderer.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Source\CmForwardRendererPlugin.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>

+ 16 - 0
CamelotForwardRenderer/Include/CmForwardRenderer.h

@@ -0,0 +1,16 @@
+#pragma once
+
+#include "CmPrerequisites.h"
+#include "CmRenderer.h"
+
+namespace CamelotEngine
+{
+	class CM_FWDRND_EXPORT ForwardRenderer : public Renderer
+	{
+	public:
+		virtual const String& getName() const;
+
+		virtual void renderAll();
+		virtual void render(const CameraPtr camera);
+	};
+}

+ 16 - 0
CamelotForwardRenderer/Include/CmForwardRendererFactory.h

@@ -0,0 +1,16 @@
+#pragma once
+
+#include "CmForwardRendererPrerequisites.h"
+#include "CmRendererFactory.h"
+
+namespace CamelotEngine
+{
+	const std::string SystemName = "ForwardRenderer";
+
+	class CM_FWDRND_EXPORT ForwardRendererFactory : public RendererFactory
+	{
+	public:
+		virtual RendererPtr create();
+		virtual const std::string& name() const;
+	};
+}

+ 19 - 0
CamelotForwardRenderer/Include/CmForwardRendererPrerequisites.h

@@ -0,0 +1,19 @@
+#pragma once
+
+#include "CmPrerequisites.h"
+
+#if (CM_PLATFORM == CM_PLATFORM_WIN32) && !defined(__MINGW32__)
+#	ifdef CM_FWDRND_EXPORTS
+#		define CM_FWDRND_EXPORT __declspec(dllexport)
+#	else
+#       if defined( __MINGW32__ )
+#           define CM_FWDRND_EXPORT
+#       else
+#    		define CM_FWDRND_EXPORT __declspec(dllimport)
+#       endif
+#	endif
+#elif defined ( CM_GCC_VISIBILITY )
+#    define CM_FWDRND_EXPORT  __attribute__ ((visibility("default")))
+#else
+#    define CM_FWDRND_EXPORT
+#endif

+ 31 - 0
CamelotForwardRenderer/Source/CmForwardRenderer.cpp

@@ -0,0 +1,31 @@
+#include "CmForwardRenderer.h"
+#include "CmCamera.h"
+#include "CmSceneManager.h"
+
+namespace CamelotEngine
+{
+	const String& ForwardRenderer::getName() const
+	{
+		static String name = "Forward Renderer";
+		return name;
+	}
+
+	void ForwardRenderer::renderAll() 
+	{
+		const vector<CameraPtr>::type& allCameras = gSceneManager().getAllCameras();
+
+		for(auto iter = allCameras.begin(); iter != allCameras.end(); ++iter)
+		{
+			render(*iter);
+		}
+	}
+
+	void ForwardRenderer::render(const CameraPtr camera) 
+	{
+		vector<RenderablePtr>::type allRenderables = gSceneManager().getVisibleRenderables(camera);
+
+		// TODO - Sort renderables
+		// Render them
+	}
+
+}

+ 16 - 0
CamelotForwardRenderer/Source/CmForwardRendererFactory.cpp

@@ -0,0 +1,16 @@
+#include "CmForwardRendererFactory.h"
+#include "CmRenderer.h"
+#include "CmForwardRenderer.h"
+
+namespace CamelotEngine
+{
+	RendererPtr ForwardRendererFactory::create()
+	{
+		return RendererPtr(new ForwardRenderer());
+	}
+
+	const std::string& ForwardRendererFactory::name() const
+	{
+		return SystemName;
+	}
+}

+ 16 - 0
CamelotForwardRenderer/Source/CmForwardRendererPlugin.cpp

@@ -0,0 +1,16 @@
+#include "CmForwardRendererPrerequisites.h"
+#include "CmForwardRendererFactory.h"
+#include "CmRendererManager.h"
+
+namespace CamelotEngine
+{
+	extern "C" CM_FWDRND_EXPORT const String& getPluginName()
+	{
+		return SystemName;
+	}
+
+	extern "C" CM_FWDRND_EXPORT void loadPlugin()
+	{
+		RendererManager::registerFactory(RendererFactoryPtr(new ForwardRendererFactory()));
+	}
+}

+ 1 - 0
CamelotGLRenderer/CamelotGLRenderer.vcxproj

@@ -13,6 +13,7 @@
   <PropertyGroup Label="Globals">
     <ProjectGuid>{F58FF869-2EA6-4FFF-AB84-328C531BA9D9}</ProjectGuid>
     <RootNamespace>CamelotGLRenderer</RootNamespace>
+    <ProjectName>CamelotGLRenderSystem</ProjectName>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

+ 19 - 2
CamelotRenderer.sln

@@ -8,7 +8,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotRenderer", "CamelotR
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotUtility", "CamelotUtility\CamelotUtility.vcxproj", "{CC7F9445-71C9-4559-9976-FF0A64DCB582}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotD3D9Renderer", "CamelotD3D9Renderer\CamelotD3D9Renderer.vcxproj", "{796B6DFF-BA04-42B7-A43A-2B14D707A33A}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotD3D9RenderSystem", "CamelotD3D9Renderer\CamelotD3D9Renderer.vcxproj", "{796B6DFF-BA04-42B7-A43A-2B14D707A33A}"
 	ProjectSection(ProjectDependencies) = postProject
 		{9B21D41C-516B-43BF-9B10-E99B599C7589} = {9B21D41C-516B-43BF-9B10-E99B599C7589}
 	EndProjectSection
@@ -18,12 +18,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotClient", "CamelotCli
 		{9B21D41C-516B-43BF-9B10-E99B599C7589} = {9B21D41C-516B-43BF-9B10-E99B599C7589}
 		{122B7A22-0C62-4B35-B661-EBF3F394EA79} = {122B7A22-0C62-4B35-B661-EBF3F394EA79}
 		{F58FF869-2EA6-4FFF-AB84-328C531BA9D9} = {F58FF869-2EA6-4FFF-AB84-328C531BA9D9}
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC} = {08975177-4A13-4EE7-BB21-3BB92FB3F3CC}
 		{7F449698-73DF-4203-9F31-0877DBF01695} = {7F449698-73DF-4203-9F31-0877DBF01695}
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1} = {BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}
 		{796B6DFF-BA04-42B7-A43A-2B14D707A33A} = {796B6DFF-BA04-42B7-A43A-2B14D707A33A}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotGLRenderer", "CamelotGLRenderer\CamelotGLRenderer.vcxproj", "{F58FF869-2EA6-4FFF-AB84-328C531BA9D9}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotGLRenderSystem", "CamelotGLRenderer\CamelotGLRenderer.vcxproj", "{F58FF869-2EA6-4FFF-AB84-328C531BA9D9}"
 	ProjectSection(ProjectDependencies) = postProject
 		{9B21D41C-516B-43BF-9B10-E99B599C7589} = {9B21D41C-516B-43BF-9B10-E99B599C7589}
 	EndProjectSection
@@ -49,6 +50,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotOISInput", "CamelotO
 		{9B21D41C-516B-43BF-9B10-E99B599C7589} = {9B21D41C-516B-43BF-9B10-E99B599C7589}
 	EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotForwardRenderer", "CamelotForwardRenderer\CamelotForwardRenderer.vcxproj", "{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}"
+	ProjectSection(ProjectDependencies) = postProject
+		{9B21D41C-516B-43BF-9B10-E99B599C7589} = {9B21D41C-516B-43BF-9B10-E99B599C7589}
+		{CC7F9445-71C9-4559-9976-FF0A64DCB582} = {CC7F9445-71C9-4559-9976-FF0A64DCB582}
+	EndProjectSection
+EndProject
 Global
 	GlobalSection(SubversionScc) = preSolution
 		Svn-Managed = True
@@ -143,6 +150,16 @@ Global
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}.Release|Mixed Platforms.Build.0 = Release|Win32
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}.Release|Win32.ActiveCfg = Release|Win32
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}.Release|Win32.Build.0 = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Debug|Win32.Build.0 = Debug|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Any CPU.ActiveCfg = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Win32.ActiveCfg = Release|Win32
+		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC}.Release|Win32.Build.0 = Release|Win32
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 18 - 12
CamelotRenderer/CamelotRenderer.vcxproj.filters

@@ -73,6 +73,12 @@
     <Filter Include="Source Files\Material">
       <UniqueIdentifier>{96caf3fa-c267-4fb4-aaa8-83519666d079}</UniqueIdentifier>
     </Filter>
+    <Filter Include="Header Files\Renderer">
+      <UniqueIdentifier>{5303462d-20d9-4c00-86b8-162e3a430b07}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\Renderer">
+      <UniqueIdentifier>{307618fb-e6a0-41ed-b274-fb1f5f4c6f74}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <Text Include="TODO.txt" />
@@ -259,15 +265,6 @@
     <ClInclude Include="Include\CmForwardRenderer.h">
       <Filter>Header Files\MOVETODLL</Filter>
     </ClInclude>
-    <ClInclude Include="Include\CmRenderer.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="Include\CmRendererManager.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="Include\CmRendererFactory.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="Include\CmResourceRef.h">
       <Filter>Header Files\Resources</Filter>
     </ClInclude>
@@ -277,6 +274,15 @@
     <ClInclude Include="Include\CmGpuProgramRTTI.h">
       <Filter>Header Files\RTTI</Filter>
     </ClInclude>
+    <ClInclude Include="Include\CmRenderer.h">
+      <Filter>Header Files\Renderer</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\CmRendererFactory.h">
+      <Filter>Header Files\Renderer</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\CmRendererManager.h">
+      <Filter>Header Files\Renderer</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="Source\CamelotRenderer.cpp">
@@ -411,11 +417,11 @@
     <ClCompile Include="Source\CmForwardRenderer.cpp">
       <Filter>Source Files\MOVETODLL</Filter>
     </ClCompile>
-    <ClCompile Include="Source\CmRendererManager.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="Source\CmResourceRef.cpp">
       <Filter>Source Files\Resources</Filter>
     </ClCompile>
+    <ClCompile Include="Source\CmRendererManager.cpp">
+      <Filter>Source Files\Renderer</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>

+ 1 - 1
CamelotRenderer/Include/CmApplication.h

@@ -18,7 +18,7 @@ namespace CamelotEngine
 		public:
 			Application();
 
-			void startUp(String renderSystemDll);
+			void startUp(const String& renderSystemDll, const String& rendererDll);
 			void runMainLoop();
 			void shutDown();
 

+ 1 - 1
CamelotRenderer/Include/CmRenderSystemManager.h

@@ -10,7 +10,7 @@ namespace CamelotEngine
 	class CM_EXPORT RenderSystemManager
 	{
 	public:
-		static void initialize(const String& name);
+		static void startUp(const String& name);
 		static RenderSystem* getActive() { return mActiveRenderSystem.get(); }
 
 		static void registerRenderSystemFactory(RenderSystemFactoryPtr factory);

+ 1 - 1
CamelotRenderer/Include/CmRendererFactory.h

@@ -4,7 +4,7 @@
 
 namespace CamelotEngine
 {
-	class RendererFactory
+	class CM_EXPORT RendererFactory
 	{
 	public:
 		virtual RendererPtr create() = 0;

+ 1 - 1
CamelotRenderer/Include/CmRendererManager.h

@@ -8,7 +8,7 @@ namespace CamelotEngine
 	class CM_EXPORT RendererManager
 	{
 	public:
-		static void initialize(const String& name);
+		static void setActive(const String& name);
 		static RendererPtr getActive() { return mActiveRenderer; }
 
 		static void registerFactory(RendererFactoryPtr factory);

+ 1 - 1
CamelotRenderer/Source/CamelotRenderer.cpp

@@ -27,7 +27,7 @@ int _tmain(int argc, _TCHAR* argv[])
 {
 	//const String& name = CamelotEngine::gApplication().getRenderSystem()->getName();
 
-	gApplication().startUp("RenderSystemD3D9.dll");
+	gApplication().startUp("RenderSystemD3D9.dll", "");
 
 	int a = 5;
 

+ 7 - 2
CamelotRenderer/Source/CmApplication.cpp

@@ -26,20 +26,25 @@
 #include "CmTechnique.h"
 #include "CmPass.h"
 
+#include "CmRendererManager.h"
+
 namespace CamelotEngine
 {
 	Application::Application()
 		:mRenderWindow(nullptr), mCamera(nullptr)
 	{ }
 
-	void Application::startUp(String renderSystemDll)
+	void Application::startUp(const String& renderSystemDll, const String& rendererDll)
 	{
 		Time::startUp(new Time());
 		Input::startUp(new Input());
 		DynLibManager::startUp(new DynLibManager());
 		HighLevelGpuProgramManager::startUp(new HighLevelGpuProgramManager());
 
-		RenderSystemManager::initialize(renderSystemDll);
+		RenderSystemManager::startUp(renderSystemDll);
+
+		loadPlugin(rendererDll);
+		RendererManager::setActive("ForwardRenderer");
 
 		RenderSystem* renderSystem = RenderSystemManager::getActive();
 		renderSystem->_initialise(false, "Camelot Renderer");

+ 1 - 1
CamelotRenderer/Source/CmRenderSystemManager.cpp

@@ -8,7 +8,7 @@ namespace CamelotEngine
 {
 	RenderSystemPtr RenderSystemManager::mActiveRenderSystem;
 
-	void RenderSystemManager::initialize(const String& pluginFilename)
+	void RenderSystemManager::startUp(const String& pluginFilename)
 	{
 		DynLib* loadedLibrary = gDynLibManager().load(pluginFilename);
 		String name = "";

+ 5 - 18
CamelotRenderer/Source/CmRendererManager.cpp

@@ -1,34 +1,21 @@
 #include "CmRendererManager.h"
-#include "CmException.h"
 #include "CmRenderer.h"
-#include "CmDynLib.h"
-#include "CmDynLibManager.h"
+#include "CmException.h"
 
 namespace CamelotEngine
 {
 	RendererPtr RendererManager::mActiveRenderer;
 
-	void RendererManager::initialize(const String& pluginFilename)
+	void RendererManager::setActive(const String& name)
 	{
-		DynLib* loadedLibrary = gDynLibManager().load(pluginFilename);
-		String name = "";
-
-		if(loadedLibrary != nullptr)
-		{
-			typedef const String& (*GetPluginNameFunc)();
-
-			GetPluginNameFunc getPluginNameFunc = (GetPluginNameFunc)loadedLibrary->getSymbol("getPluginName");
-			name = getPluginNameFunc();
-		}
-
 		for(auto iter = getAvailableFactories().begin(); iter != getAvailableFactories().end(); ++iter)
 		{
 			if((*iter)->name() == name)
 			{
-				RendererPtr newRenderSystem = (*iter)->create();
-				if(newRenderSystem != nullptr)
+				RendererPtr newRenderer = (*iter)->create();
+				if(newRenderer != nullptr)
 				{
-					mActiveRenderer = newRenderSystem;
+					mActiveRenderer = newRenderer;
 				}				
 			}
 		}