index ef2a38bfc31563affc81ba53864e615469e406b1..c2bfc245726f040e249c9455835317666c7726a3 100644 (file)
procedure r_Draw_Texture (img: TGLTexture; x, y, w, h: Integer; flip: Boolean; r, g, b, a: Byte; blend: Boolean);
procedure r_Draw_TextureRepeat (img: TGLTexture; x, y, w, h: Integer; flip: Boolean; r, g, b, a: Byte; blend: Boolean);
+ procedure r_Draw_TextureRepeatRotate (img: TGLTexture; x, y, w, h: Integer; flip: Boolean; r, g, b, a: Byte; blend: Boolean; rx, ry, angle: Integer);
procedure r_Draw_MultiTextureRepeat (m: TGLMultiTexture; const anim: TAnimState; x, y, w, h: Integer; flip: Boolean; r, g, b, a: Byte; blend: Boolean);
procedure r_Draw_MultiTextureRepeatRotate (m: TGLMultiTexture; const anim: TAnimState; x, y, w, h: Integer; flip: Boolean; r, g, b, a: Byte; blend: Boolean; rx, ry, angle: Integer);
procedure r_Draw_Filter (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
+ procedure r_Draw_FillRect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
+ procedure r_Draw_InvertRect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
implementation
DrawTile(nil, x, y, w, h, flip, NTR, NTB, NTG, NTA, blend)
else
begin
- glPushMatrix;
- glScalef(w / img.width, h / img.height, 1);
offx := 0;
offy := 0;
for j := 0 to img.lines - 1 do
begin
n := img.GetTile(i, j);
ASSERT(n <> nil);
- DrawTile(n, x + offx, y + offy, n.width, n.height, flip, r, g, b, a, blend);
+ glPushMatrix;
+ glTranslatef(x + offx, y + offy, 0);
+ glScalef(w / img.width, h / img.height, 1);
+ DrawTile(n, 0, 0, n.width, n.height, flip, r, g, b, a, blend);
+ glPopMatrix;
offx := offx + n.width;
end;
offx := 0;
offy := offy + n.height;
end;
- glPopMatrix;
end
end;
r_Draw_Texture(img, x + i * img.width, y + j * img.height, img.width, img.height, flip, r, g, b, a, blend);
end;
+ procedure r_Draw_TextureRepeatRotate (img: TGLTexture; x, y, w, h: Integer; flip: Boolean; r, g, b, a: Byte; blend: Boolean; rx, ry, angle: Integer);
+ begin
+ ASSERT(w >= 0);
+ ASSERT(h >= 0);
+ if a <> 0 then
+ begin
+ glPushMatrix;
+ glTranslatef(x + rx, y + ry, 0);
+ glRotatef(angle, 0, 0, 1);
+ glTranslatef(-(x + rx), -(y + ry), 0);
+ r_Draw_TextureRepeat(img, x, y, w, h, flip, r, g, b, a, blend);
+ glPopMatrix;
+ end
+ else
+ r_Draw_TextureRepeat(img, x, y, w, h, flip, r, g, b, a, blend);
+ end;
+
procedure r_Draw_MultiTextureRepeat (m: TGLMultiTexture; const anim: TAnimState; x, y, w, h: Integer; flip: Boolean; r, g, b, a: Byte; blend: Boolean);
var img: TGLTexture; cur, total, i: Integer;
begin
end;
procedure r_Draw_MultiTextureRepeatRotate (m: TGLMultiTexture; const anim: TAnimState; x, y, w, h: Integer; flip: Boolean; r, g, b, a: Byte; blend: Boolean; rx, ry, angle: Integer);
- var i, j: Integer;
begin
ASSERT(w >= 0);
ASSERT(h >= 0);
glEnd;
end;
+ procedure r_Draw_FillRect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
+ begin
+ ASSERT(r >= l);
+ ASSERT(b >= t);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glDisable(GL_TEXTURE_2D);
+ glColor4ub(rr, gg, bb, aa);
+ glBegin(GL_QUADS);
+ glVertex2i(l, t);
+ glVertex2i(r, t);
+ glVertex2i(r, b);
+ glVertex2i(l, b);
+ glEnd;
+ end;
+
+ procedure r_Draw_InvertRect (l, t, r, b: Integer; rr, gg, bb, aa: Byte);
+ begin
+ ASSERT(r >= l);
+ ASSERT(b >= t);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
+ glDisable(GL_TEXTURE_2D);
+ glColor4ub(rr, gg, bb, aa);
+ glBegin(GL_QUADS);
+ glVertex2i(l, t);
+ glVertex2i(r, t);
+ glVertex2i(r, b);
+ glVertex2i(l, b);
+ glEnd;
+ end;
+
end.