Nesto se bas i ne snalazim u DirectX-u tj tek sam poceo ali evo problema sa kojime ne uspevam da izadjem na kraj vec nedeju dana.
Imam u programu 3D objekte (uvezeni kao x) koji koriste png da se definise stepen providnosti (kao alpha) i to funkcionise super.
Takodje ispred tih objekata imam sprites kojima je isto uz png definisana providnosti, sto takodje radi super(barem sprite u odnosu na sprite).
Ako su dva sprajta jedan ispred drugog, providnost radi dobro.
Problem je sto se iza sprajtova ne vide 3D objekti osim ako png na tom delu nije potpuno providan, na svim mestima gde su nijanse providnosti 3D objekat se ne vidi.
Sprajtovi su definisani sa:
Code:
mainSprite = New Direct3D.Sprite(D3Ddev)
ColorKeyVal = Color.FromArgb(255, 255, 255, 255)
mainSpriteTexture = TextureLoader.FromFile(D3Ddev, "Maska.png", 800, 600, D3DX.Default, Usage.None, Format.Unknown, Pool.Default, Filter.Point, Filter.Point, ColorKeyVal.ToArgb)
mainSprite = New Direct3D.Sprite(D3Ddev)
ColorKeyVal = Color.FromArgb(255, 255, 255, 255)
mainSpriteTexture = TextureLoader.FromFile(D3Ddev, "Maska.png", 800, 600, D3DX.Default, Usage.None, Format.Unknown, Pool.Default, Filter.Point, Filter.Point, ColorKeyVal.ToArgb)
a crtaju se sa:
Code:
mainSprite.Begin(SpriteFlags.AlphaBlend)
mainSprite.Draw2D(mainSpriteTexture, New Point(0, 0), 0, New Point(0, 0), Color.White)
mainSprite.End()
mainSprite.Begin(SpriteFlags.AlphaBlend)
mainSprite.Draw2D(mainSpriteTexture, New Point(0, 0), 0, New Point(0, 0), Color.White)
mainSprite.End()
Inicijalizacija DirectX-a je(baren bitan deo):
Code:
D3Ddev.RenderState.ZBufferEnable = True
D3Ddev.RenderState.FillMode = FillMode.Solid
D3Ddev.RenderState.Lighting = True
D3Ddev.SamplerState(0).MinFilter = TextureFilter.Point
D3Ddev.SamplerState(0).MagFilter = TextureFilter.Linear
D3Ddev.RenderState.AlphaBlendEnable = True
D3Ddev.RenderState.SourceBlend = Blend.SourceAlpha
D3Ddev.RenderState.DestinationBlend = Blend.InvSourceAlpha
D3Ddev.RenderState.ZBufferEnable = True
D3Ddev.RenderState.FillMode = FillMode.Solid
D3Ddev.RenderState.Lighting = True
D3Ddev.SamplerState(0).MinFilter = TextureFilter.Point
D3Ddev.SamplerState(0).MagFilter = TextureFilter.Linear
D3Ddev.RenderState.AlphaBlendEnable = True
D3Ddev.RenderState.SourceBlend = Blend.SourceAlpha
D3Ddev.RenderState.DestinationBlend = Blend.InvSourceAlpha
Program je u VB-u, mada bi i u C# trebalo da bude isto.
Nadam se da sam uspeo da objasnim problem.
Unapred hvala
Hear all, trust nothing!