Просмотр исходного кода

Fixed windows project, fixed memory leak in renderer

Ivan Safrin 9 лет назад
Родитель
Сommit
e89028166f

+ 8 - 0
build/windows/win32/Polycode.sln

@@ -23,7 +23,15 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PolycodeUI", "PolycodeUI\Po
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Polycode3DPhysics", "Polycode3DPhysics\Polycode3DPhysics.vcxproj", "{8467AAFE-8DB1-464E-8929-56D6747ADA81}"
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{011F81E4-4185-4FBB-BCE6-644B5B1792DC}"
+	ProjectSection(SolutionItems) = preProject
+		Performance1.psess = Performance1.psess
+	EndProjectSection
+EndProject
 Global
+	GlobalSection(Performance) = preSolution
+		HasPerformanceSessions = true
+	EndGlobalSection
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Mixed Platforms = Debug|Mixed Platforms
 		Debug|Win32 = Debug|Win32

+ 0 - 2
build/windows/win32/PolycodeCore/PolycodeCore.vcxproj

@@ -204,7 +204,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolySceneLabel.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolySceneLight.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolySceneLine.cpp" />
-    <ClCompile Include="..\..\..\..\src\core\PolySceneManager.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolySceneMesh.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolyScenePrimitive.cpp" />
     <ClCompile Include="..\..\..\..\src\core\PolySceneRenderTexture.cpp" />
@@ -287,7 +286,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneLabel.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneLight.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneLine.h" />
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneManager.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneMesh.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolyScenePrimitive.h" />
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneRenderTexture.h" />

+ 0 - 6
build/windows/win32/PolycodeCore/PolycodeCore.vcxproj.filters

@@ -222,9 +222,6 @@
     <ClCompile Include="..\..\..\..\src\core\PolySceneLine.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\..\..\src\core\PolySceneManager.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\..\src\core\PolySceneMesh.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -356,9 +353,6 @@
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneLine.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneManager.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\..\..\include\polycode\core\PolySceneMesh.h">
       <Filter>Header Files</Filter>
     </ClInclude>

+ 10 - 51
build/windows/win32/TemplateApp/PolycodeTemplateApp.cpp

@@ -15,49 +15,12 @@ PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
 	core->addFileSource("archive", "hdr.pak");
 	globalPool->loadResourcesFromFolder("hdr", true);
 
-
-	// Write your code here!
-
-	Scene *scene = new Scene(Scene::SCENE_2D);
+	scene = new Scene(Scene::SCENE_2D);
 	scene->useClearColor = true;
-	scene->clearColor.setColor(0.2, 0.2, 0.2, 1.0);
-
-
-	// scene->setOverrideMaterial((Material*)globalPool->getResource(Resource::RESOURCE_MATERIAL, "Unlit"));
-
-	for (int i = 0; i < 300; i++) {
-		test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
-		test->setMaterialByName("Unlit");
-		test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "main_icon.png");
-		test->setPosition(RANDOM_NUMBER * 0.5, RANDOM_NUMBER * 0.4);
-		test->setBlendingMode(Renderer::BLEND_MODE_NONE);
-		test->setScale(0.3, 0.3);
-		scene->addChild(test);
-		tests.push_back(test);
-	}
-	Camera *camera = scene->getDefaultCamera();
-
-	fpsLabel = new SceneLabel("YO MOMMA!", 64, "main", Label::ANTIALIAS_FULL, 0.1);
-	scene->addChild(fpsLabel);
-	//fpsLabel->setPositionX(-0.3);
-	
-	scene->getDefaultCamera()->setPostFilterByName("HDRProcessBloom");
 
-	camera->getShaderPass(0).shaderBinding->addParam(ProgramParam::PARAM_NUMBER, "brightThreshold")->setNumber(0.4);
-	camera->getShaderPass(1).shaderBinding->addParam(ProgramParam::PARAM_NUMBER, "blurSize")->setNumber(0.003);
-	camera->getShaderPass(2).shaderBinding->addParam(ProgramParam::PARAM_NUMBER, "blurSize")->setNumber(0.003);
-	camera->getShaderPass(3).shaderBinding->addParam(ProgramParam::PARAM_NUMBER, "bloomFactor")->setNumber(1.5);
-	camera->getShaderPass(3).shaderBinding->addParam(ProgramParam::PARAM_NUMBER, "exposure")->setNumber(0.7);
-	
-
-	//scene->getDefaultCamera()->setPostFilterByName("Blur");
-	//camera->getShaderPass(0).shaderBinding->addParam(ProgramParam::PARAM_NUMBER, "blurSize")->setNumber(0.003);
-	//camera->getShaderPass(1).shaderBinding->addParam(ProgramParam::PARAM_NUMBER, "blurSize")->setNumber(0.003);
-
-	//    Sound *music = new Sound("BUGSHUFFLE.ogg");
-	//  music->Play();
-
-	Services()->getInput()->addEventListener(this, InputEvent::EVENT_KEYDOWN);
+	SceneLabel *label = new SceneLabel("Hello World", 32, "mono", Label::ANTIALIAS_FULL, 0.1);
+	label->setRoll(RANDOM_NUMBER * 360.0);
+	scene->addChild(label);
 }
 
 void PolycodeTemplateApp::handleEvent(Event *event) {
@@ -65,19 +28,15 @@ void PolycodeTemplateApp::handleEvent(Event *event) {
 }
 
 PolycodeTemplateApp::~PolycodeTemplateApp() {
-
+	delete core;
 }
 
 bool PolycodeTemplateApp::Update() {
-	Number elapsed = core->getElapsed();
-
-	for (int i = 0; i < tests.size(); i++) {
-		tests[i]->Roll(elapsed * 45.0);
-	}
+	bool res = core->Update();
 
-	if (Services()->getRenderer()->getRenderThread()->getFrameInfo().timeTaken > 0) {
-		//fpsLabel->setText("FPS:" + String::IntToString(1000 / Services()->getRenderer()->getRenderThread()->getFrameInfo().timeTaken));
-	}
+	RenderFrame *frame = new RenderFrame(core->getViewport());
+	scene->Render(frame, NULL, NULL, NULL, false);
+	core->getRenderer()->submitRenderFrame(frame);
 
-	return core->updateAndRender();
+	return res;
 }

+ 2 - 4
build/windows/win32/TemplateApp/PolycodeTemplateApp.h

@@ -13,12 +13,10 @@ public:
 	~PolycodeTemplateApp();
 
 	void handleEvent(Event *event);
-
 	bool Update();
 
 private:
-	ScenePrimitive *test;
 	Core *core;
-	std::vector<ScenePrimitive*> tests;
-	SceneLabel *fpsLabel;
+	Scene *scene;
+
 };

+ 0 - 1
include/polycode/core/PolyWinCore.h

@@ -194,7 +194,6 @@ public:
 		void warpCursor(int x, int y);
 		unsigned int getTicks();		
 		bool systemUpdate();
-		void Render();
 		void setVSync(bool vSyncVal);
 
 		void handleKeyDown(LPARAM lParam, WPARAM wParam);

+ 1 - 0
src/core/PolyRenderer.cpp

@@ -137,6 +137,7 @@ void RenderThread::updateRenderThread() {
 			GPUDrawBuffer *drawBuffer = nextFrame->drawBuffers.front();
 			nextFrame->drawBuffers.pop();
 			processDrawBuffer(drawBuffer);
+			delete drawBuffer;
 		}
 		
 		endFrame();

+ 0 - 7
src/core/PolyWinCore.cpp

@@ -234,13 +234,6 @@ unsigned int Win32Core::getTicks() {
 	return (unsigned int)(li.QuadPart / pcFreq);
 }
 
-void Win32Core::Render() {
-	renderer->beginFrame();
-	services->Render(Polycode::Rectangle(0, 0, getBackingXRes(), getBackingYRes()));
-	renderer->endFrame();
-}
-
-
 void  Win32Core::flushRenderContext() {
 	SwapBuffers(hDC);
 }