Marko Pintera пре 13 година
родитељ
комит
a174fa7a54

+ 0 - 1
CamelotRenderer/Include/CmApplication.h

@@ -26,7 +26,6 @@ namespace CamelotEngine
 
 		private:
 			RenderWindow* mRenderWindow;
-			Viewport* mViewport;
 			Camera* mCamera;
 			HighLevelGpuProgramPtr mFragProg;
 			HighLevelGpuProgramPtr mVertProg;

+ 8 - 1
CamelotRenderer/Include/CmCamera.h

@@ -127,6 +127,8 @@ namespace CamelotEngine {
 		/// Whether or not the rendering distance of objects should take effect for this camera
 		bool mUseRenderingDistance;
 
+		Viewport* mViewport;
+
         // Internal functions for calcs
         bool isViewOutOfDate(void) const;
         /// Signal to update frustum information.
@@ -147,12 +149,17 @@ namespace CamelotEngine {
     public:
         /** Standard constructor.
         */
-        Camera( const String& name);
+		Camera(RenderTarget* target,
+			float left = 0.0f, float top = 0.0f,
+			float width = 1.0f, float height = 1.0f,
+			int ZOrder = 0);
 
         /** Standard destructor.
         */
         virtual ~Camera();
 
+		Viewport* getViewport() { return mViewport; }
+
         /** Sets the level of rendering detail required from this camera.
             @remarks
                 Each camera is set to render at full detail by default, that is

+ 1 - 1
CamelotRenderer/Include/CmFrustum.h

@@ -147,7 +147,7 @@ namespace CamelotEngine
     public:
 
 		/// Named constructor
-		Frustum(const String& name = StringUtil::BLANK);
+		Frustum();
 
         virtual ~Frustum();
         /** Sets the Y-dimension Field Of View (FOV) of the frustum.

+ 3 - 5
CamelotRenderer/Source/CmApplication.cpp

@@ -19,7 +19,7 @@
 namespace CamelotEngine
 {
 	Application::Application()
-		:mRenderWindow(nullptr), mViewport(nullptr), mCamera(nullptr)
+		:mRenderWindow(nullptr), mCamera(nullptr)
 	{ }
 
 	void Application::startUp(String renderSystemDll)
@@ -39,14 +39,12 @@ namespace CamelotEngine
 		//renderSystem->setAmbientLight(1.0f, 1.0f, 1.0f);
 		renderSystem->setLightingEnabled(false);
 
-		mCamera = new Camera("SimpleCam");
+		mCamera = new Camera(mRenderWindow, 0.0f, 0.0f, 1.0f, 1.0f, 0);
 		mCamera->setPosition(Vector3(0,0,40));
 		mCamera->lookAt(Vector3(0,0,-300));
 		mCamera->setNearClipDistance(5);
 		mCamera->setAspectRatio(600.0f / 800.0f);
 
-		mViewport = new Viewport(mRenderWindow, 0.0f, 0.0f, 1.0f, 1.0f, 0);
-
 		/////////////////// HLSL SHADERS //////////////////////////
 		//String fragShaderCode = "sampler2D diffuseMap;			\
 		//	float4 ps_main(float2 uv : TEXCOORD0) : COLOR0		\
@@ -311,7 +309,7 @@ namespace CamelotEngine
 		ro.operationType = RenderOperation::OT_TRIANGLE_LIST;
 
 		RenderSystem* renderSystem = RenderSystemManager::getActive();
-		renderSystem->_setViewport(mViewport);
+		renderSystem->_setViewport(mCamera->getViewport());
 
 		//Matrix4 projMatrix = mCamera->getProjectionMatrixRS();
 		//renderSystem->_setProjectionMatrix(projMatrix);

+ 9 - 2
CamelotRenderer/Source/CmCamera.cpp

@@ -41,8 +41,11 @@ THE SOFTWARE.
 namespace CamelotEngine {
 
     //-----------------------------------------------------------------------
-    Camera::Camera( const String& name)
-        : Frustum(name),
+	Camera::Camera(RenderTarget* target,
+		float left, float top,
+		float width, float height,
+		int ZOrder)
+        : Frustum(),
 		mOrientation(Quaternion::IDENTITY),
 		mPosition(Vector3::ZERO),
 		mSceneDetail(PM_SOLID),
@@ -66,11 +69,15 @@ namespace CamelotEngine {
         // Init matrices
         mViewMatrix = Matrix4::ZERO;
         mProjMatrixRS = Matrix4::ZERO;
+
+		mViewport = new Viewport(target, left, top, width, height, ZOrder);
     }
 
     //-----------------------------------------------------------------------
     Camera::~Camera()
     {
+		if(mViewport != nullptr)
+			delete mViewport;
     }
     //-----------------------------------------------------------------------
     void Camera::setPolygonMode(PolygonMode sd)

+ 1 - 1
CamelotRenderer/Source/CmFrustum.cpp

@@ -41,7 +41,7 @@ THE SOFTWARE.
 namespace CamelotEngine {
     const float Frustum::INFINITE_FAR_PLANE_ADJUST = 0.00001f;
     //-----------------------------------------------------------------------
-    Frustum::Frustum(const String& name) : 
+    Frustum::Frustum() : 
         mProjType(PT_PERSPECTIVE), 
         mFOVy(Radian(Math::PI/4.0f)), 
         mFarDist(100000.0f),