|
DirectX-Forum - Beitragsübersicht - |
|
Thema | SDX: Fog zu weit vorn? |
Von |
Nico |
E-Mail |
nico.schertler@gmx.de |
Datum |
21. Juli 2009 um 13:58:35 |
Frage |
Hallo!
Ich stelle bei mir folgendermaßen den Fog ein: D3DDevice.SetRenderState(RenderState.FogColor, &H0) D3DDevice.SetRenderState(RenderState.FogEnable, True) D3DDevice.SetRenderState(RenderState.FogVertexMode, FogMode.Linear) D3DDevice.SetRenderState(RenderState.FogStart, 500) D3DDevice.SetRenderState(RenderState.FogEnd, 1000) D3DDevice.SetRenderState(RenderState.RangeFogEnable, True) Er sollte also erst ab 500 anfangen, oder? Ich beobachte ein Objekt, das ungefähr 100 Einheiten von der Kamera entfernt ist. Ohne eingeschalteten Fog ist ist korrekt sichtbar. Wenn Fog eingeschaltet ist, wird es schwarz. Warum? Die zFarPlane liegt bei 3.000, das kann also nicht der Grund sein.
Nico |
|
Antwort: |
Von |
mdx |
E-Mail |
mdx@vb-fun.de |
Datum |
22. Juli 2009 um 15:53:02 |
Antwort |
Deine FogColor ist schwarz, deswegen ist dein Objekt schwarz... was sonst nicht stimmt kann ich nicht sagen. Als Color musst du integer übergeben, und single als start und end funktioniert einwandfrei... Ich hab dir mal ne BaseEngine - Demo für PixelFog erstellt. EndFog verändert sich zwischen 1 und 5. Du kannst schön sehen wie die Box im Fog verschwindet und auftaucht. Hier der source:'# Title : FFP PixelFog '# Author : Sascha Bajus '# Created : 07/2009 '# Copyright © 2009 Sascha Bajus Public Class Project : Inherits baseEngine Private _box As Mesh '//Box Mesh Private _start As Single = 1 '//Fog Start Private _end As Single '//Fog End Private _fogcolor As Color = Color.Red '//Fog Color Public Sub New() AddHandler dxRenderScene, AddressOf render AddHandler dxKeyboardState, AddressOf keyboard AddHandler dxMouseState, AddressOf mouse AddHandler FormClosing, AddressOf closeApplication '--------------------------------------------- If Me.dxEngine("SlimDX - BaseEngine - FFP Pixel Fog") = False Then Me.Close() '//Create Box _box = Mesh.CreateBox(dxDevice, 1, 1, 1) '//Simple FFP Ligth dxLights.EnableDirectionalLight = True dxLights.EnableLighting = True dxLights.EnableDefaultMaterial() dxCamera.currentPosition = New Vector3(0, 1, -2.5) '//Change BackbufferColor To FogColor dxEngine.BackBufferColor = _fogcolor '//FFP PixelFog Setup With dxDevice .SetRenderState(RenderState.FogEnable, True) .SetRenderState(RenderState.FogColor, _fogcolor.ToArgb) .SetRenderState(RenderState.RangeFogEnable, True) .SetRenderState(RenderState.FogTableMode, FogMode.Linear) .SetRenderState(RenderState.FogStart, _start) End With End Sub #Region "## render ##" Private Sub render() '//Calc New FogEnd Value (1 - 5) _end = CSng(dxGametime.Timefading(400, 0.01) * 4 + 1) '//Set New EndValue To FFP dxDevice.SetRenderState(RenderState.FogEnd, _end) '//Box rotation dxtransformWorld = dxTransform.RotationY(0.1, 400) '//Draw Box _box.DrawSubset(0) '//OSD dx2DText.drawFPS(vbCrLf & "FogEnd Value: " & _end.ToString) '#render FPS End Sub #End Region #Region "## Inputdevices ##" Private Sub keyboard() '#Anwendung über ESC beenden If dxEngine.KeyPressed(Key.Escape) Then Me.Close() End Sub Private Sub mouse() End Sub #End Region #Region "## Exit Application ##" Private Sub closeApplication(ByVal sender As Object, ByVal e As FormClosingEventArgs) dxEngine.closeBaseEngine() If Not _box Is Nothing Then _box.Dispose() End End Sub #End Region End Class |
|
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ] |
|
Letzte Aktualisierung: Sonntag, 13. Dezember 2015 |
|