UsePNGImageDecoder() - was ist mit alpha?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Bei der Grafikkarte ist tatsächlich das 4-Byte ungenutzt (also in Grafikbildschirm/Endbild). Warum dann nicht 24-Bit? Einfach: Die Grafikkarte kann mit 4-Byte-Sprüngen leichter rechnen, als mit 3-Byte-Sprüngen (Wenn man einen Pixel ansteuern will).

Edit: Aus diesen Grund wird gerne bei Bildformaten das 4. Byte für den Alpha-Channel benutzt. Es ist eh ungenutzt.

Für eine Sinnvolle Nutzung des Alphachannels müßte allerdings auch die Sprites Alphachannels unterstützen.
Zuletzt geändert von GPI am 29.01.2005 00:57, insgesamt 1-mal geändert.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

jajaja... is ja alles richtig...

aber:
wenn ich nen 32bit mode hab, dann sind für die grafikkarte die oberen 8 pro pixel
automatisch der alpha-kanal, so stehts ja auch in der grafik selbst...

also wo ist das problem, das einzubinden?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

es wurde in den letzten 5 jahren (mindestens) keine graphikkarte mehr hergestellt, deren blitter nicht auch mit alphakanal funktioniert (außer vieleicht für den embeddedbereich, aber da interessiert es ja eh niemanden). das ist also schonmal überhaupt kein argument.
selbst programmieren ginge, zb mit directx, aber das ist 1. sehr viel arbeit und 2. ist dann das mit der platfformunabhängigkeit essig.
selbst mit dem drawingbuffer ist auch recht einfach und auch platformunabhängig, aber dann wirds schnarch langsam - zu langsam für ein spiel.

für c/c++ gibt es jede menge bibliotheken, die hardwarebeschleunigtes blitten mit alphachannel platformunabhängig anbieten. ne hast schon recht sunny, ist höchste zeit wieder komplett zu c zu wechseln.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also liege ich echt jetzt so scheisse falsch mit den oberen 8bit von den 32bit grafix???

so wird es doch codiert....
warum sollte meine fileausgabe was machen, was für die karte böhmische dörfer sind...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

ne, damit hast du schon recht. soweit ich weiß zumindest, wird bei jeder (modernen) graphikkarte in 32 bit farbtiefe, 8 bit für alphakanal benutzt.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

muss ich einfach mal probieren, nen sprite zu createn, und die daten reinzuzwingen...

hab halt keinen plan, wie der PNG-algo aussieht...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

das bringt nichts, denn die sprite routinen nutzen nur alpha fürs ganze sprite, aber nicht den alphakanal. darum währe es so viel arbeit das selbst in einer schnellen weise umzusetzen, weil man dann praktisch alle spritefunktionen nochmal selbst schreiben müßte (zb wenn man es in directx macht).
ansonsten bleibt einem nur der drawingbuffer, aber für ein sprite mit alphakanal auf dem drawingbuffer währe für jedes pixel des sprites ein lese und ein schreibvorgang nötig. zumindest in höheren auflösungen lohnt das wahrscheinlich von der geschwindigkeit her nicht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nö, gell... das ist nicht dein ernst... :cry:

directX nutzt den alpha-kanal nicht?

*kopfaufdietastaturhau*
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

doch, aber nur wenn man den alphakanal von directx nutzt :)

macht pb aber nicht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also jetzt bin ich echt verwirrt....

wenn ich auf nem 32bit screen ein 1024x1024 sprite erzeuge,
dann müsste er doch 4byte pro pix -> 4MB benutzen, nicht 3MB...
die grösse is nurn beispiel...

auf diese RAW-bitmap greift DX doch zu....

wenn ich jetzt DX sage, zeig dat teil an, und das hat alpha-werte...

ich dachte, das PB-problem liegt darin, dass er die alpha-werte einfach nicht an die karte übergibt...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten