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

Added an enable flag to SceneRenderTexture, fixed UI flickering

Ivan Safrin 12 лет назад
Родитель
Сommit
d29c139759

+ 3 - 1
Core/Contents/Include/PolySceneRenderTexture.h

@@ -63,7 +63,9 @@ namespace Polycode {
 			* Returns the target camera.
 			*/						
 			Camera *getTargetCamera();	
-				
+						
+			bool enabled;
+			
 		protected:
 		
 			Texture *filterColorBufferTexture;

+ 0 - 3
Core/Contents/Source/PolyCoreServices.cpp

@@ -169,9 +169,6 @@ void CoreServices::Render() {
 
 	renderer->setPerspectiveMode();
 	sceneManager->renderVirtual();
-	if(renderer->doClearBuffer)
-		renderer->clearScreen();					
-
 	sceneManager->Render();
 	renderer->clearLights();
 }

+ 2 - 2
Core/Contents/Source/PolyGLRenderer.cpp

@@ -163,12 +163,12 @@ void OpenGLRenderer::Resize(int xRes, int yRes) {
 	viewportHeight = xRes;
 	glClearColor(clearColor.r, clearColor.g, clearColor.b, clearColor.a);
 	glClearDepth(1.0f);
-	
+	/*
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
 
 	resetViewport();
-	
+	*/
 	glMatrixMode(GL_MODELVIEW);
 	glLineWidth(1);
 	glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

+ 3 - 1
Core/Contents/Source/PolySceneManager.cpp

@@ -72,6 +72,7 @@ void SceneManager::updateRenderTextures(Scene *scene) {
 
 void SceneManager::renderVirtual() {
 	for(int i=0;i<renderTextures.size();i++) {
+		if(renderTextures[i]->enabled) {
 		CoreServices::getInstance()->getRenderer()->setViewportSize(renderTextures[i]->getTargetTexture()->getWidth(), renderTextures[i]->getTargetTexture()->getHeight());
 		CoreServices::getInstance()->getRenderer()->loadIdentity();
 		if(renderTextures[i]->getTargetScene()->isVirtual())
@@ -84,7 +85,7 @@ void SceneManager::renderVirtual() {
 				renderTextures[i]->getTargetScene()->Render(renderTextures[i]->getTargetCamera());
 				CoreServices::getInstance()->getRenderer()->unbindFramebuffers();		
 			}
-
+		}
 			
 		CoreServices::getInstance()->getRenderer()->clearScreen();
 		CoreServices::getInstance()->getRenderer()->loadIdentity();
@@ -104,6 +105,7 @@ void SceneManager::Render() {
 				scene->Render();
 			}
 		}
+		CoreServices::getInstance()->getRenderer()->loadIdentity();			
 	}
 }
 

+ 1 - 0
Core/Contents/Source/PolySceneRenderTexture.cpp

@@ -36,6 +36,7 @@ SceneRenderTexture::SceneRenderTexture(Scene *targetScene, Camera *targetCamera,
 
 	CoreServices::getInstance()->getRenderer()->createRenderTextures(&filterColorBufferTexture, &filterZBufferTexture, renderWidth, renderHeight, floatingPoint);
 	CoreServices::getInstance()->getSceneManager()->registerRenderTexture(this);
+	enabled = true;
 }
 
 void SceneRenderTexture::resizeRenderTexture(int newWidth, int newHeight) {

BIN
IDE/Contents/Resources/UIThemes/default/arrowIcon.png


+ 1 - 2
IDE/Contents/Source/PolycodeImageEditor.cpp

@@ -65,8 +65,7 @@ bool PolycodeImageEditor::openFile(OSFileEntry filePath) {
 	bottomShape->setColor(0.0, 0.0, 0.0, 0.3);
 	bottomShape->setAnchorPoint(-1.0, -1.0, 0.0);
 	addChild(bottomShape);
-		
-		
+			
 	editorImage = new UIRect(filePath.fullPath);
 	aspectRatio = ((Number)editorImage->getWidth()) / ((Number)editorImage->getHeight());
 	editorImage->setAnchorPoint(0.0, 0.0, 0.0);