mirror of
https://github.com/love2d/love.git
synced 2026-08-16 08:11:02 +02:00
Ensure the current color is set properly after drawing particlesystems and spritebatches
This commit is contained in:
@@ -514,8 +514,9 @@ void ParticleSystem::draw(float x, float y, float angle, float sx, float sy, flo
|
||||
int numParticles = count();
|
||||
if (numParticles == 0) return; // don't bother if there's nothing to do
|
||||
|
||||
Color curcolor = opengl::getCurrentColor();
|
||||
|
||||
glPushMatrix();
|
||||
glPushAttrib(GL_CURRENT_BIT);
|
||||
|
||||
static Matrix t;
|
||||
t.setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky);
|
||||
@@ -576,8 +577,9 @@ void ParticleSystem::draw(float x, float y, float angle, float sx, float sy, flo
|
||||
glDisableClientState(GL_VERTEX_ARRAY);
|
||||
glDisableClientState(GL_COLOR_ARRAY);
|
||||
|
||||
glPopAttrib();
|
||||
glPopMatrix();
|
||||
|
||||
opengl::setCurrentColor(curcolor);
|
||||
}
|
||||
|
||||
void ParticleSystem::update(float dt)
|
||||
|
||||
@@ -218,6 +218,8 @@ void SpriteBatch::draw(float x, float y, float angle, float sx, float sy, float
|
||||
VertexBuffer::Bind array_bind(*array_buf);
|
||||
VertexBuffer::Bind element_bind(*element_buf->getVertexBuffer());
|
||||
|
||||
Color curcolor = opengl::getCurrentColor();
|
||||
|
||||
// Apply per-sprite color, if a color is set.
|
||||
if (color)
|
||||
{
|
||||
@@ -237,7 +239,10 @@ void SpriteBatch::draw(float x, float y, float angle, float sx, float sy, float
|
||||
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
|
||||
if (color)
|
||||
{
|
||||
glDisableClientState(GL_COLOR_ARRAY);
|
||||
opengl::setCurrentColor(curcolor);
|
||||
}
|
||||
|
||||
glPopMatrix();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user