Images auf Texturen kopieren (Alpha-Problem?)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Wanderer

Betreff: Images auf Texturen kopieren (Alpha-Problem?)

BeitragMo, Jan 17, 2005 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
In meinem Prog kann man Bilder laden, die dann als Textur benutzt werden. Da das ganze 'User-freundlich' sein soll, kann man Bilder jeder Größe laden. Damit Bilder, deren Größe aber keiner Zweierpotenz entspricht, nicht verzerrt werden, möchte ich bei einem Bild, das z.B. 100 x 100 Pixel groß ist, eine 128 x 128 Textur daraus machen.

Meine Vorgehensweise:
- Bild laden (kann bmp oder png sein, also mal mit, mal ohne Alpha)
- Leere Textur in korrekter Größe erstellen (Flag wird durch User angegeben, kann also maskiert sein, oder nicht)
- Bild hineinkopieren

Leider funktioniert das Hineinkopieren nicht, denn wenn ich Flag 2 oder 4 für die Textur angebe, ist entweder gar keine Textur zu sehen, oder alles ist schwarz.

Gibt es eine recht universelle Bild-in-Textur-kopieren-Funktion, die mit allen möglichen Texturflags und Bildern mit UND ohne Alpha-Kanal arbeitet, oder ist das nur sehr kompliziert zu lösen?

Ich hoffe, ich habe das nicht zu verwirrend beschrieben -ich bin's inzwischen aber leider... Sad
Mai Siehgnätschah gohs hiah.

Jan_

Ehemaliger Admin

BeitragMo, Jan 17, 2005 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
DEfiniere "in korrekter Größe"
between angels and insects
 

Wanderer

BeitragMo, Jan 17, 2005 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich doch klar beschrieben:
Zitat:
Damit Bilder, deren Größe aber keiner Zweierpotenz entspricht, nicht verzerrt werden, möchte ich bei einem Bild, das z.B. 100 x 100 Pixel groß ist, eine 128 x 128 Textur daraus machen.


Die Größe ist hier auch nicht das Problem -sondern das Handhaben der Transparenz. Das Ausgangsbild kann ja ein BMP, PNG oder sonst was sein -also mit oder ohne Alphakanal. Andererseits kann die leere Textur, in die das Bild hineinkopiert werden soll, auch jede mögliche Flag haben (da auch vom User angegeben, also z.B. 1, 2 oder 4 oder was auch immer) -kann man das elegant lösen, oder muss ich für jeden Fall hier eine eigene Pixel-Kopierroutine coden, die das je nach Fall richtig handhabt?
Mai Siehgnätschah gohs hiah.

Jan_

Ehemaliger Admin

BeitragMo, Jan 17, 2005 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
FAlls "in korrekter Größe" = 100 mal 100 in dem Beispiel ist es unsinn.
between angels and insects
 

Wanderer

BeitragMo, Jan 17, 2005 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja herrschaftszeiten, lies doch einfach mal richtig!! Und die ganze Frage hier dreht sich doch gar nicht um die Größe, Sackerlzementnochmal. Also warum hängst du dich so dran auf? Zum dritten mal jetzt: es geht darum, ein Bild in eine Textur zu übetragen, OHNE das evtl. Alpha oder Maskierung flöten gehen. Komm' mir jetzt noch einmal mit der Größe und ich stopf dir 'ne Gravity Gun in den A****! Confused
Mai Siehgnätschah gohs hiah.
 

Dreamora

BeitragMo, Jan 17, 2005 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Image laden -> Prinzipiell kein Alpha, egal welches Format. Dazu musst du es als Textur laden

Wo allerdings das genaue Problem von "copyrect" ist beim kopieren, verstehe ich nicht ganz ... die Flag gibst du ja beim erzeugen der Textur an.

einfach die Originaltextur mit Alpha und VRAM laden und danach auf die Zieltextur kopieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Wanderer

BeitragMo, Jan 17, 2005 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Dachte anfangs auch, das müsse funktionieren, tut es aber nicht. Wenn ich ein BMP mit schwarzem Hintergrund als IMAGE lade, und dieses per CopyRect auf eine Textur mit Flag 4 kopiere, wird die Textur entweder unsichtbar, oder komplett schwarz. Habe in diesem Zusammenhang mal von einer DirectDraw-Limitierung oder so gelesen. Es muss aber doch irgendeine Möglichkeit geben, ein Bild auf eine Textur zu kopieren, ohne das Maskierung / Alpha verloren gehen.
Mai Siehgnätschah gohs hiah.
 

Dreamora

BeitragMo, Jan 17, 2005 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt, alpha gibts bei Images nicht, das fällt also vorweg schon aus dem möglichen.

komplett schwarz ... hmm

hast du ein beispiel dass das zeigt? kann mir beim besten willen nicht vorstellen, dass da ein problem besteht. ( Texturen sind nicht DirectDraw, damit unterstehen sie nicht den DD limitierungen )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Jan_

Ehemaliger Admin

BeitragDi, Jan 18, 2005 8:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, es geht schon um die Auflösung, weil wenn du es nicht mit ^2 erstellst, wird es trotzdem ^2 gemacht.
--> bei 100 x 100 hast du 2 schwarze Ränder von jeweils 28

Blitz3D hat ein großes Problem mit Texturen und Flags.
Wenn du die Texture Bearbeitest, kannst du dir sichersein, das alle Flags weg sind, und du sie nciht wieder herrein bekommst.

Dagegen gibt es nur 2 Was zu machen,
1. Texture neu Laden
2. Per Banks auf die Texture zugreifen und die Pixel ohne die Kontrolle von BB ändern, dazu lese bitte Faq\hinter den Kullisen von B3D
between angels and insects

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group