Hilfe, Transparenz funktioniert nur bei mir :(
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
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.
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.
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
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.
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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
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.... 
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 habe auf PureArea.net ein Code gefunden, könnte er vielleicht helfen ?
(http://www.purearea.net/pb/CodeArchiv/G ... eenMode.pb)
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 -
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
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?
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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- Andre
- PureBasic Team
- Beiträge: 1765
- Registriert: 11.09.2004 16:35
- Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10 - Wohnort: Saxony / Deutscheinsiedel
- Kontaktdaten:
Aus dem englischen Forum, vielleicht hilft dies ja ?
(Ich kann bei den Sprite/Drawing "Geschichten" leider selbst überhaupt nicht mitreden.)
(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
Wieso grau?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?
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))

[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- blbltheworm
- Beiträge: 217
- Registriert: 22.09.2004 19:36
- Wohnort: Auf der schönen Schwäbischen Alb
