![]() |
Re: [OpenGL] Transparenz
Ein Texturloader sollte mbMn mehr können, als Texturen zu laden und zwar mehr als ein Format. Bei Lossys glBitmap kann man Alphakanäle zufügen, die Farbkanäle tauschen, die Textur invertieren, über Funktionen Filter anwenden, Texturen Prozedural erzeugen, ... (Hab ich was vergessen?). Überdies kann man hier objektorientiert arbeiten, was a) die Arbeit mit der Textur und b) die Verwaltung dieser extrem erleichtert.
p.s. das steht Uses OpenGL. Das ist hoffentlich nicht der Borland-Header, oder? p.p.s.: die glBitmap ist im DGLSDK, kann man ![]() |
Re: [OpenGL] Transparenz
Zitat:
Zitat:
die man auch gepackt im PNG-Format bekommt. (Ausgenommen mal *.dds-Dateien) Zitat:
Zitat:
für meine nonVCL-App's zu fett und so viel falsch oder Fehlerhaft ist da nun auch nicht. :mrgreen: |
Re: [OpenGL] Transparenz
ich mache es so:
Delphi-Quellcode:
glDepthMask(false);
glBlendFunc(GL_SRC_ALPHA, GL_ONE); glEnable(GL_BLEND); glEnable(GL_TEXTURE_2D); fTexture.Bind; //rendern; fTexture.Unbind(); glDisable(GL_TEXTURE_2D); glDepthMask(true); glDisable(GL_BLEND); |
Re: [OpenGL] Transparenz
turboPASCAL: Um mal etwas zu spalten. Die richtige originale Textures kann keine PNGs. Höchstens die von dir angepasste Version. ;)
Aber wie du selbst ja schon gesagt hast ist dein Code für möglichst kleine Anwendungen ausgelegt. Das war in meinem Loader niemals das Ziel. Sondern kompfortables einfaches objekt orientiertes Arbeiten. Bzw war es für mich auch erklärtes Ziel nur im Notfall wirklich etwas an den Texturdaten zu verändern. Und ich habe immer versucht keine altlastigen Techniken (gluBuild2DMipmaps) zu benutzen. Bzw nur wenns nicht anders geht. Mit Formate waren keine Dateiformate gemeint sondern die Texturformate die in den Dateien abgelegt werden können. Also so zum Beispiel. AlphaLuminance, RGB5A1, RGBA4, BGRA, S3TC etc. Die unterschiedlichen Formate werden so von den Dateien und von OpenGL unterstützt. Das muss dann natürlich auch irgendwo verwaltet werden. Borland Header. Ja der ist Fehlerhaft und hoffnungslos veraltet. Aber es zwingt dich ja niemand und wenn der reicht. Aber in deinem Loader fehlen eigentlich nur 6-10 Konstanten und ein paar Funktionen und dann bräuchtest du den Header dort gar nicht mehr. Sidorin. Ich denke die Aufzählung passt schon. Wobei die Objekte natürlich sehr offen sind und man eigentlich alles damit machen kann was man will. Im Endeffekt ist es aber jedem selbst überlassen was man zu Laden benutzt. Mir persönlich gefällt Objektorientiert halt besser. ;) |
Re: [OpenGL] Transparenz
Übrigends, ich mache es jetzt bei der neuen Engine so
Delphi-Quellcode:
Und ich nutze bei der neuen Version auch die Textures.pas (1.03), wobei ich meinem Vorredner recht geben muss. Also laut
//Texture wird vorher gebunden
glDisable(GL_DEPTH_TEST); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE); //Render... glDisable(GL_BLEND); glEnable(GL_DEPTH_TEST); ![]()
Delphi-Quellcode:
Aber gibt ja viele Mods davon...
function LoadTexture(Filename: String; var Texture : GLuint; LoadFromRes : Boolean) : Boolean;
begin if copy(Uppercase(filename), length(filename)-3, 4) = '.BMP' then LoadBMPTexture(Filename, Texture, LoadFromRes); if copy(Uppercase(filename), length(filename)-3, 4) = '.JPG' then LoadJPGTexture(Filename, Texture, LoadFromRes); if copy(Uppercase(filename), length(filename)-3, 4) = '.TGA' then LoadTGATexture(Filename, Texture, LoadFromRes); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 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