Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Du möchtest, dass eine andere Farbe in der Textur transparent wird? Bitte beachte, dass Deviation in diesem Falle null ist somit auch eine Abweichung von 1 Farbwert bereits dazu führt, dass das Pixel nicht mehr verändert wird.
Und was wohl eher das Problem sein wird. Per Default wirft die glBitmap die Texturdaten aus dem Speicher sobald sie generiert wurde. Und wenn du dann noch mal versuchst eine Textur zu generieren passiert nichts, weil keine Daten existieren. Sollte ich evtl später noch ein paar Exceptions um mich werfen. Aber ich schweife ab. Du solltest nach dem Erstellen der Instanz die Eigenschaft FreeDataAfterGenTexture auf False sein. Dann erhöht sich aber der Speicherverbrauch. Aber du kannst den Alphawert neu erzeugen lassen bzw hochladen.
Diese Eigenschaft kannst du auch Global mit der Methode glBitmapSetDefaultFreeDataAfterGenTexture setzen. Das wirkt sich aber nur auf die Texturen aus die danach erstellt werden.
PS: Allerdings ändert sich bei einem Aufruf von GenTexture womöglich die ID der Textur. Weswegen das wohl eher nicht mit DisplayListen kompatibel ist.
Und noch einen Hinweis: Es wird wenn du filtern nich auf Nearest hast oder Mipmaps verwendest auch die per ColorKey entfernte Farbe in Randbereichen sichtbar.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
NerdIII: Nein. Die ID muss sich normal nicht ändern. Allerdings, wenn ich die Textur neu zuweise (glTexImage), dann muss OpenGL intern Speicherbereiche anpassen etc. Und dann ist es einfach schneller und evtl besser für den Treiber, wenn ich die Textur komplett wegschmeiße und mir eine Neue erzeuge. Wenn sich aber nur der Inhalt der Textur ändert, dann kann man einfach die Daten mittel glTexSubImage aktualisieren. Das ist dann noch schneller als sie neu zu erstellen. Und in meinem Loader kann ich das leider nicht so richtig entscheiden was da passiert. Zu mal so dynamische Texturen eher die Ausnahme damit sind. Vermute ich mal stark. Also schmeiße ich sie weg und erzeuge sie neu. Ist auch Programmtechnisch das Einfachste.
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.