소스 검색

Fixed up DX9 so it created the primary window in a similar fashion like DX11 and GL

Marko Pintera 12 년 전
부모
커밋
129fbdbcb2

+ 2 - 2
CamelotClient/CamelotClient.cpp

@@ -29,8 +29,8 @@
 #include "CmEditorWindow.h"
 #include "CmEditorWindow.h"
 
 
 //#define DX11
 //#define DX11
-#define DX9
-//#define GL
+//#define DX9
+#define GL
 
 
 using namespace CamelotFramework;
 using namespace CamelotFramework;
 using namespace CamelotEditor;
 using namespace CamelotEditor;

+ 2 - 5
CamelotD3D9Renderer/Include/CmD3D9RenderSystem.h

@@ -58,11 +58,6 @@ namespace CamelotFramework
 		 */
 		 */
 		const String& getShadingLanguageName() const;
 		const String& getShadingLanguageName() const;
 
 
-		/**
-		 * @copydoc RenderSystem::_notifyWindowCreated.
-		 */
-		void _notifyWindowCreated(RenderWindow& renderWindow);
-
 		/**
 		/**
 		 * @copydoc RenderSystem::setRenderTarget()
 		 * @copydoc RenderSystem::setRenderTarget()
 		 */
 		 */
@@ -181,6 +176,8 @@ namespace CamelotFramework
 		void determineFSAASettings(IDirect3DDevice9* d3d9Device, UINT32 fsaa, const String& fsaaHint, D3DFORMAT d3dPixelFormat, 
 		void determineFSAASettings(IDirect3DDevice9* d3d9Device, UINT32 fsaa, const String& fsaaHint, D3DFORMAT d3dPixelFormat, 
 			bool fullScreen, D3DMULTISAMPLE_TYPE *outMultisampleType, DWORD *outMultisampleQuality);
 			bool fullScreen, D3DMULTISAMPLE_TYPE *outMultisampleType, DWORD *outMultisampleQuality);
 
 
+		void registerWindow(RenderWindow& renderWindow);
+
 	private:
 	private:
 		/// Direct3D
 		/// Direct3D
 		IDirect3D9*	 mpD3D;		
 		IDirect3D9*	 mpD3D;		

+ 8 - 3
CamelotD3D9Renderer/Source/CmD3D9RenderSystem.cpp

@@ -182,8 +182,15 @@ namespace CamelotFramework
 		// Create render state manager
 		// Create render state manager
 		RenderStateManager::startUp(CM_NEW(RenderStateManager, GenAlloc) RenderStateManager());
 		RenderStateManager::startUp(CM_NEW(RenderStateManager, GenAlloc) RenderStateManager());
 
 
+		// Create primary window and finalize initialization
+		RenderWindowPtr primaryWindow = RenderWindow::create(mPrimaryWindowDesc);
+		D3D9RenderWindow* d3d9renderWindow = static_cast<D3D9RenderWindow*>(primaryWindow.get());
+		updateRenderSystemCapabilities(d3d9renderWindow);
+
 		// call superclass method
 		// call superclass method
 		RenderSystem::initialize_internal(asyncOp);
 		RenderSystem::initialize_internal(asyncOp);
+
+		asyncOp.completeOperation(primaryWindow);
 	}
 	}
 	//---------------------------------------------------------------------
 	//---------------------------------------------------------------------
 	void D3D9RenderSystem::destroy_internal()
 	void D3D9RenderSystem::destroy_internal()
@@ -241,7 +248,7 @@ namespace CamelotFramework
 		msD3D9RenderSystem = NULL;
 		msD3D9RenderSystem = NULL;
 	}
 	}
 	//--------------------------------------------------------------------
 	//--------------------------------------------------------------------
-	void D3D9RenderSystem::_notifyWindowCreated(RenderWindow& renderWindow)
+	void D3D9RenderSystem::registerWindow(RenderWindow& renderWindow)
 	{		
 	{		
 		THROW_IF_NOT_RENDER_THREAD;
 		THROW_IF_NOT_RENDER_THREAD;
 
 
@@ -265,8 +272,6 @@ namespace CamelotFramework
 		}
 		}
 
 
 		mResourceManager->unlockDeviceAccess();
 		mResourceManager->unlockDeviceAccess();
-
-		updateRenderSystemCapabilities(d3d9renderWindow);
 	}	
 	}	
 
 
 	void D3D9RenderSystem::bindGpuProgram(HGpuProgram prg)
 	void D3D9RenderSystem::bindGpuProgram(HGpuProgram prg)

+ 1 - 1
CamelotD3D9Renderer/Source/CmD3D9RenderWindow.cpp

@@ -254,7 +254,7 @@ namespace CamelotFramework
 		mClosed = false;
 		mClosed = false;
 
 
 		D3D9RenderSystem* rs = static_cast<D3D9RenderSystem*>(RenderSystem::instancePtr());
 		D3D9RenderSystem* rs = static_cast<D3D9RenderSystem*>(RenderSystem::instancePtr());
-		rs->_notifyWindowCreated(*this);
+		rs->registerWindow(*this);
 
 
 		RenderWindow::initialize_internal();
 		RenderWindow::initialize_internal();
 	}
 	}

+ 3 - 2
TODO.txt

@@ -1,8 +1,9 @@
 ----------------------- CAMELOT 2D / GUI -----------------------------------------------------------
 ----------------------- CAMELOT 2D / GUI -----------------------------------------------------------
 
 
 ----------------------------------------------------------------------------------------------
 ----------------------------------------------------------------------------------------------
-<<<<<<OpenGL issues>>>>>>>
-Camera in new window in OpenGL doesn't render anything
+Finish up DX9 window init
+Attempt to remove _notifyWindowCreated method
+ - instead make sure of RenderWindowManager?
 
 
 -------------
 -------------