mirror of https://github.com/axmolengine/axmol.git
Adds `Renderer::clean`, and fixes crash in `PerformanceTest/Node
children Test`.
This commit is contained in:
parent
fe036c3870
commit
7b4a1308ea
|
@ -359,6 +359,12 @@ void Renderer::render()
|
|||
}
|
||||
}
|
||||
|
||||
clean();
|
||||
}
|
||||
|
||||
void Renderer::clean()
|
||||
{
|
||||
// Clear render group
|
||||
for (size_t j = 0 ; j < _renderGroups.size(); j++)
|
||||
{
|
||||
//commands are owned by nodes
|
||||
|
@ -368,12 +374,18 @@ void Renderer::render()
|
|||
// }
|
||||
_renderGroups[j].clear();
|
||||
}
|
||||
|
||||
//Clear the stack incase gl view hasn't been initialized yet
|
||||
|
||||
// Clear batch quad commands
|
||||
_batchedQuadCommands.clear();
|
||||
_numQuads = 0;
|
||||
|
||||
// Clear the stack incase gl view hasn't been initialized yet
|
||||
while(!_renderStack.empty())
|
||||
{
|
||||
_renderStack.pop();
|
||||
}
|
||||
|
||||
// Reset render stack
|
||||
RenderStackElement element = {DEFAULT_RENDER_QUEUE, 0};
|
||||
_renderStack.push(element);
|
||||
_lastMaterialID = 0;
|
||||
|
|
|
@ -79,7 +79,7 @@ public:
|
|||
|
||||
//TODO manage GLView inside Render itself
|
||||
void initGLView();
|
||||
|
||||
|
||||
/** Adds a `RenderComamnd` into the renderer */
|
||||
void addCommand(RenderCommand* command);
|
||||
|
||||
|
@ -98,6 +98,9 @@ public:
|
|||
/** Renders into the GLView all the queued `RenderCommand` objects */
|
||||
void render();
|
||||
|
||||
/** Cleans all `RenderCommand`s in the queue */
|
||||
void clean();
|
||||
|
||||
/* returns the number of drawn batches in the last frame */
|
||||
ssize_t getDrawnBatches() const { return _drawnBatches; }
|
||||
/* RenderCommands (except) QuadCommand should update this value */
|
||||
|
|
|
@ -947,6 +947,10 @@ void VisitSceneGraph::update(float dt)
|
|||
CC_PROFILER_START( this->profilerName() );
|
||||
this->visit();
|
||||
CC_PROFILER_STOP( this->profilerName() );
|
||||
|
||||
// Call `Renderer::clean` to prevent crash if current scene is destroyed.
|
||||
// The render commands associated with current scene should be cleaned.
|
||||
Director::getInstance()->getRenderer()->clean();
|
||||
}
|
||||
|
||||
std::string VisitSceneGraph::title() const
|
||||
|
|
Loading…
Reference in New Issue