Teksturowanie

0

Jak Narysować bitmapkę ale w wielokącie?

0

TPunkt = record
x,y : real;
end;

procedure rysujCzworokat(d1, d2, d3, d4 : TPunkt; bmp : TBitmap; plotno : TCanvas);
var x, y, bx, by, i : integer;
p : TPunkt;
a, b : real;

begin
for x := 0 to bmp.Width do
for y := 0 to bmp.Height do begin
a := x/bmp.Width;
b := y/bmp.Height;
p.x := d1.x+(d2.x-d1.x)*a+(d4.x-d1.x)*b+(d1.x-d2.x+d3.x-d4.x)ab;
p.y := d1.y+(d2.y-d1.y)*a+(d4.y-d1.y)*b+(d1.y-d2.y+d3.y-d4.y)ab;

     plotno.canvas.pixels[bx,by] := bmp.canvas.pixels[round(p.x),round(p.y)]

end;

powinno działać, deklarujesz czworokąt czterema punktami (d1-d4 : TPunkt) i rysujesz go na "plotnie" (TCanvas) . Kod oczywiście można troche zoptymaizować, bo występują tu typy real, co nie jest wymagane i odwołania do canvas.pixels[] są niesamowicie powolne. (nie chciało mi się zmieniać, to część większego projektu, dlatego te real.. )
pozdrawiam. jeśli będziesz miał problemy to pisz.

0

a ja dalej sie bede upieral, zrob se negine w3d pod opengl :|

1 użytkowników online, w tym zalogowanych: 0, gości: 1