Browse Source

Improved performance slightly when love.graphics.setColor is used heavily with automatic batching.

--HG--
branch : minor
Alex Szpakowski 8 years ago
parent
commit
551dc423a2

+ 1 - 3
src/modules/graphics/opengl/Graphics.cpp

@@ -1232,9 +1232,7 @@ void Graphics::setColor(Colorf c)
 	c.b = std::min(std::max(c.b, 0.0f), 1.0f);
 	c.b = std::min(std::max(c.b, 0.0f), 1.0f);
 	c.a = std::min(std::max(c.a, 0.0f), 1.0f);
 	c.a = std::min(std::max(c.a, 0.0f), 1.0f);
 
 
-	Colorf nc = c;
-	gammaCorrectColor(nc);
-	gl.setConstantColor(nc);
+	gl.setConstantColor(c);
 
 
 	states.back().color = c;
 	states.back().color = c;
 }
 }

+ 3 - 2
src/modules/graphics/opengl/OpenGL.cpp

@@ -344,9 +344,10 @@ void OpenGL::prepareDraw()
 
 
 	if (state.constantColor != state.lastConstantColor)
 	if (state.constantColor != state.lastConstantColor)
 	{
 	{
-		const Colorf &c = state.constantColor;
+		state.lastConstantColor = state.constantColor;
+		Colorf c = state.constantColor;
+		gammaCorrectColor(c);
 		glVertexAttrib4f(ATTRIB_CONSTANTCOLOR, c.r, c.g, c.b, c.a);
 		glVertexAttrib4f(ATTRIB_CONSTANTCOLOR, c.r, c.g, c.b, c.a);
-		state.lastConstantColor = c;
 	}
 	}
 }
 }
 
 

+ 1 - 1
src/modules/graphics/opengl/OpenGL.h

@@ -236,7 +236,7 @@ public:
 
 
 	/**
 	/**
 	 * Sets the constant color (vertex attribute). This may be applied
 	 * Sets the constant color (vertex attribute). This may be applied
-	 * internally at draw-time.
+	 * internally at draw-time. This gets gamma-corrected internally as well.
 	 **/
 	 **/
 	void setConstantColor(const Colorf &color);
 	void setConstantColor(const Colorf &color);
 	const Colorf &getConstantColor() const;
 	const Colorf &getConstantColor() const;