index f66708fbe57af0a95b177e3ba078d5d366c40877..56d2656c8c17e0e556e70e8525fc06e7e718537e 100644 (file)
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);
end;
end;
- function r_Textures_LoadTextFromMemory (data: Pointer; size: LongInt; var txt: TAnimTextInfo): Boolean;
- var cfg: TConfig; text: TAnimTextInfo;
+ function r_Textures_LoadTextFromMemory (data: Pointer; size: LongInt; var text: TAnimTextInfo): Boolean;
+ var cfg: TConfig;
begin
result := false;
if data <> nil then
text.anim.delay := MAX(1, text.anim.delay);
text.anim.frames := MAX(1, text.anim.frames);
cfg.Free;
- if (txt.name <> '') and (txt.w > 0) and (txt.h > 0) and (txt.anim.delay > 0) and (txt.anim.frames > 0) then
- begin
- txt := text;
- result := true;
- end;
+ result := (text.name <> '') and (text.w > 0) and (text.h > 0) and (text.anim.delay > 0) and (text.anim.frames > 0);
end;
end;
end;