It's just:
[pascal]
TTextureTile = record
u1, v1, u2, v2: Single;
end;
TSpriteTile = record
x, y, width, height: Integer;
end;
function SpriteTileToTextureTile(ST: TSpriteTile; fTexWidth, fTexHeight: Integer): TTextureTile;
begin
Result.u1 := ST.x / fTexWidth;
Result.v1 := ST.y / fTexHeight;
Result.u2 := (ST.x + ST.width) / fTexWidth;
Result.v2 := (ST.y + ST.height) / fTexHeight;
end;
[/pascal]
Then just pass the data in TTextureTile to openGL and you're done.
[pascal]
var TT: TTextureTile;
....
glTexCoord2f( TT.u1, TT.v1 );
glVertex3f( 0, 0, 0.0 );
glTexCoord2f( TT.u2, TT.v1 );
glVertex3f( 512, 0, 0 );
glTexCoord2f( TT.u2, TT.v2 );
glVertex3f( 512, 512, 0 );
glTexCoord2f( TT.u1, TT.v2 );
glVertex3f( 0, 512, 0 );
[/pascal]
Hope this helps.
Bookmarks