Einfache Transparenz in Direct3D 9
-
Hallo,
ich versuche gerade den Hintergrund meiner Sprites zu entfernen, bzw. transparent zu machen. Das Problem ist, dass ich ja meine Grafiken nicht aus Dateien lade, sondern aus einem Rom File, von dem ich die Farbinformationen lese und dann die Texturen zur Laufzeit fülle. Deswegen kann ich nicht D3DXLoadTextureFromFile usw. benutzen, sondern muss D3DXCreateTexture benutzen, die aber keinen Colorkey unterstützt! Leider gibt es ja den normalen color key seit dx8 nicht mehr, alle sagen alpha blending. Aber ich möchte ja nur bestimmt farben nicht rendern, das ist alles. Kennt jemand eine Möglichkeit den Hintergrund von Texturen transparent zu machen (ohne D3DXLoadTextureFromFile usw.)?Danke
Phoenix
-
Ja, das kannst du mit Aplha blending machen. Du giebst einfach den farben die nicht sichbra sein sollen eine tansarenz von 256, und schon ist dieser ixel nicht mehr zu sehen. Beim laden lädst du ja pixel für pixel ein, und speicherst es dann in eine ARGB Color struktur. Beim laden setzt du dann einfach an dem pixel wo eine farbe von 256,0,0 ist einfach den aplpha wert auf 256 ...
Da bild ist wie ein gitter aufgebaut, und anschließend wird einfach eine aplpha map drüber gespannt, und alpha werte machen ja nicht alles gleich tanparent, sondern immer nur den jeweiligen pixel! Jeder pixel hat einen eigenen alpha wert!