Seite 4 von 6
Verfasst: 03.12.2004 16:24
von Kaeru Gaman
@GPI
und nicht den alpha-kanal vergessen.
das 4te byte deklariert für jedes pixel im sprite eine eigene transparenz.
Verfasst: 04.12.2004 01:16
von MVXA
Glaub, hier ist was scher ins tüdeln gekommen, mein Fehler. Böser Furz, was schreibt er so verwirrende Texte -_- (Über meine BEstrafung denke ich später nach...).
Ich meinte, dass ich als Hintergrund für die Spritesdie Farbe [c]RGB(0,128,0)[/c] eingestellt habe. Diese ist unter der 16 Farben Palette, 256 Farben Palette, 16-Bit und 32-Bit. Dachte ich zu mindest.
Ich hatte von Anfang an den 32-Bit Farbenmodus für die Anzeige eingestellt.
Verfasst: 04.12.2004 01:54
von Kaeru Gaman
hm, achso.
aber mit deiner annahme hattest du recht: grün128 ist eine der 16 grundfarben
und in allen paletten vorhanden.
die behandlung von 24bit farben im 16bit-screen mode ist fehlerhaft,
dazu hab ich gestern ne lange testreihe gefahren,
der thread ist mittlerweile in den FAQs gelandet.
aber mal zurück zum ursprungs-thema:
bei mir funzt es auch so wie es ist.
vielleicht ist das dieses transparenz-bei-sprite3D-problem.
wann dieses wirklich auftritt ( OS, DX-version, GraKa ) müsste man mal
zuverlässig ermitteln.
Verfasst: 04.12.2004 11:58
von MVXA
Mhhh. also ich liste mal die PCs (und NBs) auf, auf denen ich das Beispiel getestet habe:
1.) AMD Athlon XP 2000+, 256 MB RAM, einer GF 4 MX (Win XP Home, DX 9.0c oder so)
2.) Intel Pentium 3 Prozessor, 128 MB RAM, eine S3 Twister (Win XP Home, DX 8.1 oder so)
3.) Intel Pentium 4 Prozessor, 256 MB RAM, eine GF 4 MX (Win XP Home, DX 9.0b oder so)
4.) Intel Pentium 3 Prozessor, 256 MB RAM, eine ATI Rage (frag nicht welche, Win2k und DX unbekannt)
5.) Intel Pentium 1 Prozessor, 16 MB RAM, eine ATI graghics mit 2 MB RAM (Win98, DX 7.0c oder so):mrgreen: hier funzte das beispiel aber aufgrund der grafikkarte nimma..
Wie man sehen kann hab ich das auf verschiedenen Systemen getestet und es führte überall dazu, dass die Farbe nicht transparent erschien

. Ich guck nochmal ob ich das mit den Sprites auch im Hauptprogramm vertauscht habe, wenn ja, peinlich....

Verfasst: 04.12.2004 18:45
von MVXA
Ich habe auf PureArea.net ein Code gefunden, könnte er vielleicht helfen ?
Code: Alles auswählen
Procedure.l TransformColor(R.b,G.b,b.b)
Select DrawingBufferPixelFormat()
Case #PB_PixelFormat_32Bits_RGB
ProcedureReturn R+G<<8+b<<16
Case #PB_PixelFormat_32Bits_BGR
ProcedureReturn b+G<<8+R<<16
Case #PB_PixelFormat_24Bits_RGB
ProcedureReturn R+G<<8+b<<16
Case #PB_PixelFormat_24Bits_BGR
ProcedureReturn b+G<<8+R<<16
Case #PB_PixelFormat_16Bits
ProcedureReturn b>>3+(G&%11111100)<<3+(R&%11111000)<<8
Case #PB_PixelFormat_15Bits
ProcedureReturn R&%11111000>>3+(G&%11111000)<<2+(b&%11111000)<<7
EndSelect
EndProcedure
(
http://www.purearea.net/pb/CodeArchiv/G ... eenMode.pb)
Verfasst: 07.12.2004 21:21
von Kaeru Gaman
bow wow!
da bist du ja auf den puren pixel-converter code gestoßen.
der macht doch nur 8bitgrau draus oder?
Red + Grn<<8 + Blu<<16
is 256grau, oda?
Blu>>3 + (Green & %11111100)<<3 + (Red & %11111000)<<8
holla, (?que tal?)
nee, is echt 'grauwert 256' aus jegliche farbe!
macht halt nur bei 16bit oder 15bit (oldfashioned) en bissken aufstand,
aba in echt isser auch falsch...
muss nich plus heissen, sondern durchschnitt,
also durch anzahl der quellen geteilt.
sorry für laxe ausdruxweise... >2%°, ok?
Verfasst: 07.12.2004 21:49
von Andre
Aus dem
englischen Forum, vielleicht hilft dies ja ?
(Ich kann bei den Sprite/Drawing "Geschichten" leider selbst überhaupt nicht mitreden.)
Code: Alles auswählen
;
; A sample code procedure to convert the color if necessary
;
Procedure ConvertPixelColorToRawPixelColor(Color.l)
Select DrawingBufferPixelFormat
Case #PB_PixelFormat_24Bits_BGR
ProcedureReturn (Color & $FF0000) >> 16 + (Color & $00FF00) + (Color & $0000FF) << 16
Case #PB_PixelFormat_32Bits_BGR
ProcedureReturn (Color & $FF0000) >> 16 + (Color & $00FF00) + (Color & $0000FF) << 16
Default
ProcedureReturn Color
EndIf
EndProcedure
Verfasst: 07.12.2004 23:34
von Deeem2031
Kaeru Gaman hat geschrieben:bow wow!
da bist du ja auf den puren pixel-converter code gestoßen.
der macht doch nur 8bitgrau draus oder?
Red + Grn<<8 + Blu<<16
is 256grau, oda?
Wieso grau?
Color = Red + Grn<<8 + Blu<<16
ist genau das selbe wie
Color = RGB(Red,Grn,Blu)
kannst es ja ausprobieren.
Also der Code convertiert den rgb-wert den du an die prob lieferst in die Form die von gerade geöffneten Startdrawing()-Stopdrawing() Bereich im Speicher benutzt wird.
D.h. du kannst den wert dann so wie er zurückgegeben wird in den Speicher schreiben. Rauskommt das selbe wie Plot(x,y,rgb(red,grn,blu))
Verfasst: 08.12.2004 23:56
von Kaeru Gaman
yo sorry, denkfehler!
grn und blu sind ja 8bit
(red+grn+blu)/3 wär für ne 256grayscale...
...wie gesagt, war bei >2%°
Verfasst: 13.12.2004 23:27
von blbltheworm
Ähem,
gibt es denn jetzt eine Lösung für dieses Problem??