mirror of https://github.com/axmolengine/axmol.git
Test clipping node with alpha
This commit is contained in:
parent
c288e5ef9c
commit
abb011f0ef
|
@ -158,6 +158,7 @@ void Renderer::render()
|
||||||
//Process RenderQueue
|
//Process RenderQueue
|
||||||
for(size_t i = _renderStack.top().currentIndex; i < len; i++)
|
for(size_t i = _renderStack.top().currentIndex; i < len; i++)
|
||||||
{
|
{
|
||||||
|
_renderStack.top().currentIndex = _lastCommand = i;
|
||||||
auto command = currRenderQueue[i];
|
auto command = currRenderQueue[i];
|
||||||
|
|
||||||
if(command->getType() == QUAD_COMMAND)
|
if(command->getType() == QUAD_COMMAND)
|
||||||
|
@ -171,7 +172,7 @@ void Renderer::render()
|
||||||
{
|
{
|
||||||
memcpy(_quads + _numQuads, cmd->getQuad(), sizeof(V3F_C4B_T2F_Quad) * cmd->getQuadCount());
|
memcpy(_quads + _numQuads, cmd->getQuad(), sizeof(V3F_C4B_T2F_Quad) * cmd->getQuadCount());
|
||||||
_numQuads += cmd->getQuadCount();
|
_numQuads += cmd->getQuadCount();
|
||||||
_lastCommand = i;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -202,8 +203,6 @@ void Renderer::render()
|
||||||
{
|
{
|
||||||
flush();
|
flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
_renderStack.top().currentIndex = i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Draw the batched quads
|
//Draw the batched quads
|
||||||
|
@ -232,14 +231,17 @@ void Renderer::render()
|
||||||
|
|
||||||
void Renderer::drawBatchedQuads()
|
void Renderer::drawBatchedQuads()
|
||||||
{
|
{
|
||||||
//TODO we can improve the draw performance by inseart material switching command before hand.
|
//TODO we can improve the draw performance by insert material switching command before hand.
|
||||||
|
|
||||||
int quadsToDraw = 0;
|
int quadsToDraw = 0;
|
||||||
int startQuad = 0;
|
int startQuad = 0;
|
||||||
|
|
||||||
//Upload buffer to VBO
|
//Upload buffer to VBO
|
||||||
if(_numQuads <= 0)
|
if(_numQuads <= 0)
|
||||||
|
{
|
||||||
|
_firstCommand = _lastCommand;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//Set VBO data
|
//Set VBO data
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, _buffersVBO[0]);
|
glBindBuffer(GL_ARRAY_BUFFER, _buffersVBO[0]);
|
||||||
|
|
|
@ -268,6 +268,7 @@ NewClippingNodeTest::NewClippingNodeTest()
|
||||||
clipper->setContentSize( Size(200, 200) );
|
clipper->setContentSize( Size(200, 200) );
|
||||||
clipper->setAnchorPoint( Point(0.5, 0.5) );
|
clipper->setAnchorPoint( Point(0.5, 0.5) );
|
||||||
clipper->setPosition( Point(s.width / 2, s.height / 2) );
|
clipper->setPosition( Point(s.width / 2, s.height / 2) );
|
||||||
|
|
||||||
clipper->runAction(RepeatForever::create(RotateBy::create(1, 45)));
|
clipper->runAction(RepeatForever::create(RotateBy::create(1, 45)));
|
||||||
this->addChild(clipper);
|
this->addChild(clipper);
|
||||||
|
|
||||||
|
@ -282,7 +283,9 @@ NewClippingNodeTest::NewClippingNodeTest()
|
||||||
// stencil->drawPolygon(rectangle, 4, white, 1, white);
|
// stencil->drawPolygon(rectangle, 4, white, 1, white);
|
||||||
// clipper->setStencil(stencil);
|
// clipper->setStencil(stencil);
|
||||||
|
|
||||||
|
clipper->setAlphaThreshold(0.05f);
|
||||||
auto stencil = NewSprite::create("Images/grossini.png");
|
auto stencil = NewSprite::create("Images/grossini.png");
|
||||||
|
stencil->setScale(2.0f);
|
||||||
stencil->setPosition(s.width/2, s.height/2);
|
stencil->setPosition(s.width/2, s.height/2);
|
||||||
clipper->setStencil(stencil);
|
clipper->setStencil(stencil);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue