index ec47f58bc640ecd4d2a213246f19519ccaaef100..ae9d02afa6596d878453ffb7d1dc87e6f8e43485 100644 (file)
TGLAtlas = class (TAtlas)
private
mID: GLuint;
+ mFilter: Boolean;
public
constructor Create (ww, hh: Integer; id: GLuint);
function Alloc (ww, hh: Integer): TGLAtlasNode; overload;
property id: GLuint read mID write mID default 0;
+ property filter: Boolean read mFilter write mFilter;
end;
TGLTexture = class
mCols: Integer;
mTile: array of TGLAtlasNode;
mHints: TGLHintsSet;
+ mFilter: Boolean;
public
destructor Destroy; override;
property cols: Integer read mCols;
property lines: Integer read GetLines;
property hints: TGLHintsSet read mHints;
+ property filter: Boolean read mFilter write mFilter;
end;
TGLMultiTexture = class
ASSERT(hh > 0);
inherited Create(ww, hh);
self.mID := id;
+ self.mFilter := false;
end;
destructor TGLAtlas.Destroy;
t.mCols := cols;
// t.mLines := lines;
t.mHints := hints;
+ t.mFilter := false;
SetLength(t.mTile, cols * lines);
for y := 0 to lines - 1 do
begin
begin
// auto, max possible reccomended by driver
glGetIntegerv(GL_MAX_TEXTURE_SIZE, @size);
- if size < 1 then size := 64;
+ size := size div 2; (* hack: on some devices max size may produce invalid texture *)
+ if size < 64 then size := 64; (* at least 64x64 are guarantied by specification *)
end
else
begin
begin
currentTexture2D := 0;
maxTileSize := r_Textures_GetMaxHardwareSize();
- e_LogWritefln('TEXTURE SIZE: %s', [maxTileSize]);
+ e_LogWritefln('Texture Tile Size: %s', [maxTileSize]);
end;
procedure r_Textures_Finalize;
begin
for i := 0 to High(atl) do
begin
- glDeleteTextures(1, @atl[i].id);
- atl[i].id := 0;
- r_Common_FreeAndNil(atl[i]);
+ if atl[i] <> nil then
+ begin
+ glDeleteTextures(1, @atl[i].id);
+ atl[i].id := 0;
+ r_Common_FreeAndNil(atl[i]);
+ end;
end;
end;
SetLength(atl, 0);
begin
for i := 0 to High(ratl) do
begin
- glDeleteTextures(1, @ratl[i].id);
- ratl[i].id := 0;
- r_Common_FreeAndNil(ratl[i]);
+ if ratl[i] <> nil then
+ begin
+ glDeleteTextures(1, @ratl[i].id);
+ ratl[i].id := 0;
+ r_Common_FreeAndNil(ratl[i]);
+ end;
end;
end;
SetLength(ratl, 0);