X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Frenders%2Fopengl%2Fr_textures.pas;h=56d2656c8c17e0e556e70e8525fc06e7e718537e;hb=d0374fd617aa1703e4aa31b8ff3b0f5228636021;hp=f66708fbe57af0a95b177e3ba078d5d366c40877;hpb=34addf6031503a4d22a9c440d967ae81ffee4c6a;p=d2df-sdl.git diff --git a/src/game/renders/opengl/r_textures.pas b/src/game/renders/opengl/r_textures.pas index f66708f..56d2656 100644 --- a/src/game/renders/opengl/r_textures.pas +++ b/src/game/renders/opengl/r_textures.pas @@ -465,7 +465,8 @@ implementation 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 @@ -482,7 +483,7 @@ implementation 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; @@ -492,9 +493,12 @@ implementation 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); @@ -503,9 +507,12 @@ implementation 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); @@ -644,8 +651,8 @@ implementation 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 @@ -669,11 +676,7 @@ implementation 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;