Images auf Texturen kopieren (Alpha-Problem?)
Übersicht

WandererBetreff: Images auf Texturen kopieren (Alpha-Problem?) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... ![]() |
||
Mai Siehgnätschah gohs hiah. |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
DEfiniere "in korrekter Größe" | ||
between angels and insects |
Wanderer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
FAlls "in korrekter Größe" = 100 mal 100 in dem Beispiel ist es unsinn. | ||
between angels and insects |
Wanderer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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****! ![]() |
||
Mai Siehgnätschah gohs hiah. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group