Sprite (Maskierung)
Übersicht

![]() |
IguanBetreff: Sprite (Maskierung) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Kann mir jemand sagen, wieso bei folgendem code der Schwarze bereich des Sprites immer noch angezeigt wird? Und wieso man den Text nicht sieht? Code: [AUSKLAPPEN] gwidth = 800 gheight = 600 Graphics3D gwidth,gheight,32 AmbientLight 255,255,255 cam = CreateCamera() CameraClsMode Cam,0,1 PositionEntity cam,gwidth/2,gheight/2,-gwidth/2 S = CreateSprite() EntityFX S,16 SpriteViewMode S,2 ScaleSprite S,64,64 Tex = CreateTexture(64,64,4) SetBuffer TextureBuffer(Tex) Cls Font = LoadFont ("Arial",30) SetFont Font Color 255,0,0 Rect 10,10,30,30 Color 0,255,0 Text 15,15,"123" SetBuffer BackBuffer() EntityTexture S,Tex ;EntityAlpha S,.5 HandleSprite S,-1,-1 ClsColor 255,255,255 While Not KeyHit(1) Cls UpdateWorld RenderWorld Flip Wend ich habe mal probeweise ein Bild mit dem Text erstellt, und dann mit Code: [AUSKLAPPEN] loadsprite(file$,4) geladen. So wurden die schwarzen bereiche maskiert. Aber wiso läuft das mit dem oberen code nicht?? |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Würde sagen dass die Flag 4 nur komplett schwarze Felder durchsichtig macht (R=0 G=0 B=0 , RGB) Bei deiner kreierten Textur (CreateTexture) sind noch keine Farbwerte definiert, also schreib mal sowas wie:
EntityColor s,0,0,0 vor dem Tex = CreateTexture(64,64,4) Befehl. Hoffe konnte helfen. MfG. Nightphoenix |
||
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, klappt auch nicht mit Entitycolor S,0,0,0 ![]() |
||
MatthiasBetreff: Problem gelöst |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay. Habe eine Lössung für dich. ![]() Code: [AUSKLAPPEN] gwidth = 800 gheight = 600 Graphics3D gwidth,gheight,32,2 AmbientLight 255,255,255 cam = CreateCamera() CameraClsMode Cam,0,1 PositionEntity cam,gwidth/2,gheight/2,-gwidth/2 S = CreateSprite() EntityFX S,16 SpriteViewMode S,2 ScaleSprite S,64,64 ;EntityColor S,0,0,0 Tex = CreateTexture(64,64,2) Image=CreateImage(64,64) SetBuffer ImageBuffer(Image) Font = LoadFont ("Arial",30) SetFont Font Color 255,0,0 Rect 10,10,30,30 Color 0,255,0 Text 0,0,"123" ImgB=ImageBuffer(Image) TexB=TextureBuffer(Tex) SetBuffer TextureBuffer(Tex) LockBuffer ImgB:LockBuffer TexB For ZX=0 To 63:For ZY=0 To 63 rgb=ReadPixelFast(ZX,ZY,ImgB) a=(rgb And $FF000000)/$1000000 r=(rgb And $FF0000)/$10000 g=(rgb And $FF00)/$100 b=rgb And $FF If r=0 And g=0 And b=0 Then a=0 rgb=a*$1000000 + r*$10000 + g*$100 + b WritePixelFast ZX,ZY,rgb Next:Next UnlockBuffer ImgB:UnlockBuffer TexB SetBuffer BackBuffer() EntityTexture S,Tex ;EntityAlpha S,.5 HandleSprite S,-1,-1 ClsColor 255,255,255 While Not KeyHit(1) Cls UpdateWorld RenderWorld Flip Wend End Mfg Matthias |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was dein Problem mit Text betrifft: Setzt mal TFormFilter 0 vor dem Zeichnen, das sollte eigentlich helfen. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Matthias: Könntest du mir erklären, was dein code da macht?? Geht das nicht einfacher? | ||
MatthiasBetreff: Das ist doch einfach. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Texturen sind keine Images das ist das Problem. Der Farbwert wird in Rot Grün Blau gespalten und dann wieder zusammen gesetzt mit einen neuen AlphaWert.
Leider kann ich dir nur diesen Lösungsweg bieten oder du Speicherst das bild und Lädst es wieder neu. Aber wenn du einen anderen Lösungsweg findest das würde mich auch interesieren. |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
müsste es nicht auch statt mit dem manuellen auslesen mit CopyRect funtzen?
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Müsste man ausprobieren. Theoretisch nicht, weil Images keine Alphadaten enthalten und das Masking nicht via Alpha läuft sondern wirklich mit der Farbe (deshalb kann man für Images auch die Mask Farbe ändern) | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
so, stehe nun vor einem ähnlichen Problem und will eigentlich nicht Matthias Lösung ( die ich sehrwohl verstehe, sie aber für zu komplex halte ) verwenden, da ich wenn ich eine Textur mit Blitz lade, und das Flag auf 4 Stelle, auch nur auf der Textur alles was ich nicht sehen will schwarz anmalen muss, wieso?
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was meinst du mit wieso?
Wenn du auf masked stellst wird alles was auf der Textur ist zur Ladezeit durch Alpha 0 ersetzt. Wenn nix schwarz ist, gibt es nichts transparentes. Wenn du jedoch später etwas schwarzes rein schreibst, interessiert das die Textur nicht, denn du malst mit schwarz, nicht mit Alpha 0. die Textur wird sich nicht zur Laufzeit nochmal neu initialisieren (aus performancegründen) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group