Seite 2 von 4

Verfasst: 29.01.2005 00:50
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.

Verfasst: 29.01.2005 00:54
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?

Verfasst: 29.01.2005 01:03
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.

Verfasst: 29.01.2005 01:07
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...

Verfasst: 29.01.2005 01:36
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.

Verfasst: 29.01.2005 12:51
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...

Verfasst: 29.01.2005 14:06
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.

Verfasst: 29.01.2005 14:15
von Kaeru Gaman
nö, gell... das ist nicht dein ernst... :cry:

directX nutzt den alpha-kanal nicht?

*kopfaufdietastaturhau*

Verfasst: 29.01.2005 14:22
von Zaphod
doch, aber nur wenn man den alphakanal von directx nutzt :)

macht pb aber nicht.

Verfasst: 29.01.2005 14:26
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...