![]() |
AW: MultipleTexture Loader
...
Uppercase(ExtractFileExt.... ... |
AW: MultipleTexture Loader
Zitat:
Danke. gruss |
AW: MultipleTexture Loader
Zitat:
Wer es denn haben will ändert alles nach
Delphi-Quellcode:
um
if Uppercase(ExtractFileExt(sImgName)) = '.PNG' then
Obwohl diese Funktion letztendlich genau das gleiche tut ;) gruss |
AW: MultipleTexture Loader
Hier noch ein anderer EQ (Spectrum) ;)
Das Spectrum kann beliebig anhand von Paletten geändert werden. Für die Leute die es interessiert. gruss |
AW: MultipleTexture Loader
Hab noch eine änderung vorgenommen so ist man unabhängig vom array MultibleTex
Einfach ein beliebiges Array mit übergeben das wars dann. Ist besser wenn man mehrere Scenen hat.
Delphi-Quellcode:
EDIT:Hab noch ein paar Sterne hinzugefügt
procedure MakeMultipleTexture(N: integer; var MTexture: array of TMmtTex);
var mtCount : integer; K : integer; nRet : TGLenum; OkDelete : Bool; begin mtCount := high(MTexture) - low(MTexture) + 1; OkDelete := False; // Array Redimensionieren SetLength(Texture, mtCount); if mtCount > 0 then begin for K := 0 to (mtCount - 1) do begin Texture[K] := MTexture[k].Texture; if Texture[K] <> 0 then OkDelete := True; end; // befinden sich Texturen im Array dann löschen if OkDelete then begin glDeleteTextures(mtCount, @Texture[1]); glGenTextures(mtCount, @Texture[1]); end; nRet := glGetError; // Überprüfung ob ein OpenGL Fehler aufgetreten ist if nRet = 0 then begin // alles OK Aktuelle Texture laden // und ins OpenGl Format konvertieren for K := 0 to (mtCount - 1) do begin SetLength(mPixelArray, 0); if CreateGLTextureFromFile(MTexture[K].FullName, xSize, ySize, MTexture[K].Square, K) then begin MTexture[k].Texture := Texture[K]; glBindTexture(GL_TEXTURE_2D, Texture[K]); nRet := glGetError; if nRet = 0 then begin glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 4, xSize, ySize, 0, GL_RGBA, GL_UNSIGNED_BYTE, @mPixelArray[0]); end; end; end; end; end; end; Und ein neues Modul erstellt. gruss |
AW: MultipleTexture Loader
Waren noch ein paar kleine unstimmigkeiten drin.
Sind jetzt beseitigt. |
AW: MultipleTexture Loader
Zitat:
Hier beispielsweise wird immer wieder
Delphi-Quellcode:
aufgerufen.
copy(), Uppercase(), length(), ...copy() Uppercase(), ...
Dabei könnte man daraus einen kleinen Einzeiler machen, welcher sicherlich performanter und dynamischer ist:
Delphi-Quellcode:
const
SupportedImageTypes: array[0..8] of string = ( '.BMP', '.DIB', '.GIF', '.ICO', '.JPEG', '.JPG', '.PNG', '.TIF', '.TIFF'); function GetImageType(const AImgName: string; out ImageType: string): Boolean; begin ImageType := ExtractFileExt(AImgName); Result := StrUtils.IndexText(ImageType, SupportedImageTypes) > 0; end; // Und in der seitenlangen Methode dann nur noch: if GetImageType(sImgName, ImageType) then |
AW: MultipleTexture Loader
Delphi-Quellcode:
Möglich habe es nicht gemessen ;)
Dabei könnte man daraus einen kleinen Einzeiler machen, welcher sicherlich performanter und dynamischer ist:
Grundsätzlich kann man das ganze in eine Class Packen.. es gibt also viele möglichkeiten. Warum eine zuzätzliche Funktion für die Abfrage erstellen letztendlich kommt es auf das gleiche heraus. Ich denke die art und weise wie man den Filetyp ausließt spielt doch eigentlich keine rolle. Zumindest behaupte ich das es nicht meßbar ist deine variante im vergleich zu meiner. ;) Was nicht heißt das ich es nicht übernehmen will macht den Code etwas übersichtlicher. *.pas wurde aktualisiert! Danke @mleyen gruss |
AW: MultipleTexture Loader
Generell sollte man, vor allem zur besseren Lesbarkeit, wo es möglich ist const-Konstruktionen verwenden statt var mit anschliessender Initialisierung.
Also z.B. auch
Delphi-Quellcode:
Je weniger unnötige Zeilen ein Programm hat, desto weniger muss man beim Studium des Codes hin- und herblättern.const p: array [1..12] of integer = (2,4,8,16,32,64,128,256,512,1024,2048,4096); |
AW: MultipleTexture Loader
Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz