--- a/hedgewars/uRender.pas Tue Jun 03 11:09:18 2014 -0400
+++ b/hedgewars/uRender.pas Wed Jun 04 19:39:54 2014 +0200
@@ -52,6 +52,7 @@
procedure DrawHedgehog (X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real);
procedure DrawScreenWidget (widget: POnScreenWidget);
+procedure openglTint (r, g, b, a: Byte); inline;
procedure Tint (r, g, b, a: Byte); inline;
procedure Tint (c: Longword); inline;
procedure untint(); inline;
@@ -713,12 +714,22 @@
{$ENDIF}
end;
+procedure openglTint(r, g, b, a: Byte); inline;
+{$IFDEF GL2}
+const
+ scale:Real = 1.0/255.0;
+{$ENDIF}
+begin
+ {$IFDEF GL2}
+ glUniform4f(uMainTintLocation, r*scale, g*scale, b*scale, a*scale);
+ {$ELSE}
+ glColor4ub(r, g, b, a);
+ {$ENDIF}
+end;
+
procedure Tint(r, g, b, a: Byte); inline;
var
nc, tw: Longword;
- {$IFDEF GL2}
- scale:Real = 1.0/255.0;
- {$ENDIF}
begin
nc:= (r shl 24) or (g shl 16) or (b shl 8) or a;
@@ -735,12 +746,7 @@
b:= tw
end;
- {$IFDEF GL2}
- glUniform4f(uMainTintLocation, r*scale, g*scale, b*scale, a*scale);
- //glColor4ub(r, g, b, a);
- {$ELSE}
- glColor4ub(r, g, b, a);
- {$ENDIF}
+ openglTint(r, g, b, a);
lastTint:= nc;
end;
@@ -752,7 +758,9 @@
procedure untint(); inline;
begin
- Tint($FF, $FF, $FF, $FF)
+ if cWhiteColor = lastTint then exit;
+ openglTint($FF, $FF, $FF, $FF);
+ lastTint:= cWhiteColor;
end;
procedure setTintAdd(f: boolean); inline;