Antwort |
Ich habe gerade eine interessante "Entdeckung" gemacht. Dazu erstmal noch weitergehende Informationen dazu, was ich überhaupt mache: Die Kreistextur wird nicht direkt in den BackBuffer gerendert, sondern erst in eine Textur (nachfolgend ZielTextur gennant):'Erstellung der Zieltextur: FoW = New Texture(D3DDevice, Karte.Width * 5, Karte.Height * 5, 0, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default) '(...) 'Rendern der Kreistextur In die Zieltextur: Dim Surf As Surface Surf = FoW.GetSurfaceLevel(0) D3DDevice.SetRenderTarget(0, Surf) D3DDevice.Clear(ClearFlags.Target, Color.FromArgb(0, 0, 0, 0), 1, 0) D3DDevice.BeginScene() DSprite.Begin(SpriteFlags.AlphaBlend) DSprite.Draw2D(texSicht, New Rectangle(0, 0, 256, 256), New SizeF(Sichtweite * 10, Sichtweite * 10), New PointF(0, 0), 0, New PointF(pos.X - Sichtweite * 5, pos.Y - Sichtweite * 5), Color.White) 'texSicht ist die Kreistextur 'Sichtweite ein Double, der die Sichtweite angibt 'pos ist ein Vector3, der die Position eines Objektes angibt 'Der Faktor 5 ist angegeben, weil die Zieltextur 5-mal so groß ist, wie die eigentliche Karte DSprite.End() D3DDevice.EndScene() Damit sollte ja jetzt in der linken oberen Ecke der Zieltextur genau die Kreistextur sein. Jetzt zu meiner Entdeckung: Ich habe mal den BackBuffer nicht nach Schwarz gecleart, sondern nach weiß. Wird nun nur die Kreistextur gerendert, bleibt alles weiß, so sollte es ja auch sein, da dann Weiß mit Weiß geblendet wird. Wird nur die Zieltextur gerendert, bleibt ein schwarzer Rand. Hier ein Screenshot. Liegt es vielleicht an irgendeinem falschen Texturformat?
Nico |