ソースを参照

More improper deletion fixes

Ivan Safrin 9 年 前
コミット
ceef627e96

+ 3 - 3
build/osx/TemplateApp/TemplateApp/PolycodeTemplateApp.mm

@@ -23,9 +23,9 @@ PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
     scene->clearColor.setColor(0.2, 0.2, 0.2, 1.0);
     scene->clearColor.setColor(0.2, 0.2, 0.2, 1.0);
     
     
     
     
-    scene->setOverrideMaterial((Material*)globalPool->getResource(Resource::RESOURCE_MATERIAL, "Unlit"));
+   // scene->setOverrideMaterial((Material*)globalPool->getResource(Resource::RESOURCE_MATERIAL, "Unlit"));
     
     
-    for(int i=0; i  < 1; i++) {
+    for(int i=0; i  < 3000; i++) {
         test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
         test = new ScenePrimitive(ScenePrimitive::TYPE_VPLANE, 0.5, 0.5);
         test->setMaterialByName("Unlit");
         test->setMaterialByName("Unlit");
         test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "main_icon.png");
         test->getShaderPass(0).shaderBinding->loadTextureForParam("diffuse", "main_icon.png");
@@ -38,7 +38,7 @@ PolycodeTemplateApp::PolycodeTemplateApp(PolycodeView *view) {
        Camera *camera = scene->getDefaultCamera();
        Camera *camera = scene->getDefaultCamera();
 
 
     fpsLabel = new SceneLabel("FPS:", 32, "main", Label::ANTIALIAS_FULL, 0.1);
     fpsLabel = new SceneLabel("FPS:", 32, "main", Label::ANTIALIAS_FULL, 0.1);
-  //  scene->addChild(fpsLabel);
+    scene->addChild(fpsLabel);
     fpsLabel->setPositionX(-0.6);
     fpsLabel->setPositionX(-0.6);
     /*
     /*
     scene->getDefaultCamera()->setPostFilterByName("HDRProcessBloom");
     scene->getDefaultCamera()->setPostFilterByName("HDRProcessBloom");

+ 2 - 2
src/core/PolyCamera.cpp

@@ -54,7 +54,7 @@ Camera::Camera(Scene *parentScene) : Entity() {
 
 
 Camera::~Camera() {	
 Camera::~Camera() {	
     for(int i=0; i < shaderPasses.size(); i++)  {
     for(int i=0; i < shaderPasses.size(); i++)  {
-        delete shaderPasses[i].shaderBinding;
+        Services()->getRenderer()->destroyShaderBinding(shaderPasses[i].shaderBinding);
     }
     }
     delete screenQuadMesh;
     delete screenQuadMesh;
     Services()->getRenderer()->destroyRenderBuffer(originalFramebuffer);
     Services()->getRenderer()->destroyRenderBuffer(originalFramebuffer);
@@ -350,7 +350,7 @@ void Camera::setPostFilter(Material *material) {
     }
     }
     
     
     for(int i=0; i < shaderPasses.size(); i++)  {
     for(int i=0; i < shaderPasses.size(); i++)  {
-        delete shaderPasses[i].shaderBinding;
+        Services()->getRenderer()->destroyShaderBinding(shaderPasses[i].shaderBinding);
     }
     }
     shaderPasses.clear();
     shaderPasses.clear();
     
     

+ 1 - 1
src/core/PolyMaterial.cpp

@@ -249,7 +249,7 @@ void Material::recreateExpectedShaderParams() {
 
 
 void Material::removeShaderPass(int shaderIndex) {
 void Material::removeShaderPass(int shaderIndex) {
 	if(shaderIndex >= 0 && shaderIndex < shaderPasses.size()) {
 	if(shaderIndex >= 0 && shaderIndex < shaderPasses.size()) {
-        delete shaderPasses[shaderIndex].shaderBinding;
+        Services()->getRenderer()->destroyShaderBinding(shaderPasses[shaderIndex].shaderBinding);
 		shaderPasses.erase(shaderPasses.begin() + shaderIndex);
 		shaderPasses.erase(shaderPasses.begin() + shaderIndex);
 	}
 	}
 }
 }