From 17ce0fd05a6ab3dd5c96079ed724316e80b85bd6 Mon Sep 17 00:00:00 2001 From: kearwood Date: Thu, 25 Oct 2012 18:48:25 +0000 Subject: [PATCH] Fixed bug that caused transparent objects to intermittently become opaque --HG-- extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%40141 --- KREngine/KREngine/Classes/KRNode.h | 3 +-- KREngine/KREngine/Classes/KRScene.cpp | 12 +++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/KREngine/KREngine/Classes/KRNode.h b/KREngine/KREngine/Classes/KRNode.h index 801f6d8..9049350 100644 --- a/KREngine/KREngine/Classes/KRNode.h +++ b/KREngine/KREngine/Classes/KRNode.h @@ -33,8 +33,7 @@ public: RENDER_PASS_DEFERRED_OPAQUE, RENDER_PASS_FORWARD_TRANSPARENT, RENDER_PASS_FLARES, - RENDER_PASS_SHADOWMAP, - RENDER_PASS_SKYBOX + RENDER_PASS_SHADOWMAP }; KRNode(KRScene &scene, std::string name); diff --git a/KREngine/KREngine/Classes/KRScene.cpp b/KREngine/KREngine/Classes/KRScene.cpp index a477fe1..b000a2b 100644 --- a/KREngine/KREngine/Classes/KRScene.cpp +++ b/KREngine/KREngine/Classes/KRScene.cpp @@ -236,7 +236,9 @@ void KRScene::render(int childOrder[], KROctreeNode *pOctreeNode, std::setendOcclusionQuery(); + if(renderPass != KRNode::RENDER_PASS_FORWARD_TRANSPARENT) { + GLDEBUG(glDisable(GL_BLEND)); + } else { + GLDEBUG(glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); + } + if(bVisible) { // Schedule a pass to get the result of the occlusion test only for future frames and passes, without rendering the model or recurring further