Hilfe, Transparenz funktioniert nur bei mir :(

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@GPI

und nicht den alpha-kanal vergessen.
das 4te byte deklariert für jedes pixel im sprite eine eigene transparenz.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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.... :oops:
Bild
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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)
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
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:

Beitrag 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 
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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))
Bild
[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

Beitrag 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%°
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

Ähem,
gibt es denn jetzt eine Lösung für dieses Problem??
Antworten