DirectX-Forum - Beitragsübersicht -
ThemaDX8: Lichter in DirectX8
Von (Nick-)Name
Datum 11. Juni 2011 um 00:39:08
Frage Hi
wie der Titel schon sagt versuche ich in DirectX8 Lichter einzufügen
dabei habe ich die Projektdatei "Wellen" von "Klaus Neumann" aus den Tutorials dieser Webseite als Grundlage genommen
und hab ein Licht definiert, diesem Eigenschaften zugewiesen und es an die SetLight Methode des Device weitergereicht
und anschließend der Devicemethode EnableLight true übergeben
Aber es ändert sich nichts
Was hab ich vergessen?
LG
Antwort:
Von (Nick-)Name
Datum 11. Juni 2011 um 22:30:12
Antwort Hi
Zitat:
hast du das Licht auch eingeschaltet?

ja (oder meintest du was anderes):
D3DDevice.SetLight 0, ll(0)
D3DDevice.LightEnable 0, 1
Zitat:
Prüfe darüber hinaus noch, ob deine Vertex-Daten Normalen beinhalten

Bis zum heutigen Tag wusste ich gar nicht, dass DX8 Normale unterstüzt
Hier mal die relevanten Code Teile:
Public Vertices() As LITVERTEX
Private Vertices_Init As Boolean
Public VBuffer_Mesh() As Direct3DVertexBuffer8
Private VBuffer_Mesh_Init As Boolean
Public Function Initialise() As Boolean
On Error GoTo ErrHandler:
VBuffer_Mesh_Init = False
Vertices_Init = False
'DirectX Initialisierung...

D3DDevice.SetVertexShader Lit_FVF

D3DDevice.SetRenderState D3DRS_LIGHTING, 0
D3DDevice.SetRenderState D3DRS_AMBIENT, &H202020
D3DDevice.SetRenderState D3DRS_CULLMODE, 1
D3DDevice.SetRenderState D3DRS_ZENABLE, 1
D3DDevice.SetTextureStageState 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR
D3DDevice.SetRenderState D3DRS_SRCBLEND, 3 '(hell) oder 3 (etwas dunkler)
'D3DDevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_ONE
D3DDevice.SetRenderState D3DRS_FILLMODE, D3DFILL_SOLID
'Matrix Initialisierung...
ReDim VBuffer_Mesh(0)
ErrHandler:
Debug.Print "Error Number Returned: " & Err.Number
Initialise = False
End Function

Public Sub AddMesh()
If VBuffer_Mesh_Init Then ReDim Preserve VBuffer_Mesh(UBound(VBuffer_Mesh) + 1) Else ReDim VBuffer_Mesh(0)
VBuffer_Mesh_Init = True
Vertices_Init = False
End Sub
Public Sub AddVertex(X As Single, Y As Single, Z As Single, Diffuse As Long, Specular As Long, tu As Single, tv As Single)
If Vertices_Init Then ReDim Preserve Vertices(UBound(Vertices) + 1) Else ReDim Vertices(0)
Vertices(UBound(Vertices)) = CreateLitVertex(X, Y, Z, Diffuse, Specular, tu, tv)
Vertices_Init = True
Set VBuffer_Mesh(UBound(VBuffer_Mesh)) = D3DDevice.CreateVertexBuffer(Len(Vertices(0)) * (UBound(Vertices) + 1), 0, Lit_FVF, D3DPOOL_DEFAULT)
D3DVertexBuffer8SetData VBuffer_Mesh(UBound(VBuffer_Mesh)), 0, Len(Vertices(0)) * (UBound(Vertices) + 1), 0, Vertices(0)
End Sub
Public Sub Render(move As Single)
Dim n As Integer
On Error GoTo ErrHandle
D3DDevice.Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, RGB(255, 100, 0), 1#, 0
ll(0).Diffuse.b = 1
ll(0).Diffuse.g = 1
ll(0).Diffuse.r = 1
ll(0).Diffuse.a = 1
ll(0).Specular.b = 1
ll(0).Specular.g = 1
ll(0).Specular.r = 1
ll(0).Specular.a = 0.5
ll(0).Position.X = Sin(RotateX) * Cos(RotateY) * 4
ll(0).Position.Y = Sin(RotateY) * 4
ll(0).Position.Z = Cos(RotateX) * Cos(RotateY) * 4
ll(0).Range = 100
ll(0).Falloff = 0.5
ll(0).Attenuation1 = 0.2
ll(0).Theta = 2
ll(0).Phi = 30
ll(0).Type = D3DLIGHT_POINT
D3DDevice.SetLight 0, ll(0)
D3DDevice.LightEnable 0, 1
Clear
AddMesh
AddVertex 1, 1, 1, 256, 256, 0, 0
AddVertex 1, 1, -1, 256, 256, 0, 0
AddVertex -1, 1, 1, 256, 256, 0, 0
AddVertex -1, 1, -1, 256, 256, 0, 0

AddMesh
AddVertex 1, -1, 1, 256, 256, 0, 0
AddVertex 1, -1, -1, 256, 256, 0, 0
AddVertex -1, -1, 1, 256, 256, 0, 0
AddVertex -1, -1, -1, 256, 256, 0, 0

D3DXMatrixLookAtLH matView, MakeVector(Sin(RotateX) * Cos(RotateY) * radius, Sin(RotateY) * radius, Cos(RotateX) * Cos(RotateY) * radius), MakeVector(0, 0, 0), MakeVector(0, 3, 0)
D3DDevice.SetTransform D3DTS_VIEW, matView '0,80,100

D3DDevice.BeginScene
D3DDevice.SetRenderState D3DRS_ALPHABLENDENABLE, 0
Dim testMaterial As D3DMATERIAL8
testMaterial.Diffuse.a = 1
testMaterial.Diffuse.r = 1
D3DDevice.SetMaterial testMaterial
D3DDevice.SetTexture 0, Nothing

For n = LBound(VBuffer_Mesh()) To UBound(VBuffer_Mesh())
D3DDevice.SetStreamSource 0, VBuffer_Mesh(n), Len(Vertices(0))
D3DDevice.DrawPrimitive D3DPT_TRIANGLESTRIP, 0, 2
Next n
D3DDevice.EndScene
D3DDevice.Present ByVal 0, ByVal 0, 0, ByVal 0
Exit Sub
ErrHandle:
Debug.Print Err.Number & "//" & Err.Description
If MsgBox(Err.Number & "//" & Err.Description, vbOKCancel) = vbCancel Then End
Resume Next
End Sub
Eigentlich hab ich noch mehr Code, aber das ist jetz mal das wichtigste
LG
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ]
Antworten
DX8: Lichter in DirectX8 - (Nick-)Name 11. Juni 2011 um 00:39:08
Re: Lichter in DirectX8 - Nico 11. Juni 2011 um 19:26:36
Re: Lichter in DirectX8 - (Nick-)Name 11. Juni 2011 um 22:30:12
Re: Lichter in DirectX8 - Nico 12. Juni 2011 um 09:58:14
Re: Lichter in DirectX8 - (Nick-)Name 12. Juni 2011 um 18:13:42
Re: Lichter in DirectX8 - Nico 12. Juni 2011 um 18:40:24
Re: Lichter in DirectX8 - (Nick-)Name 12. Juni 2011 um 23:20:11
Re: Lichter in DirectX8 - Nico 13. Juni 2011 um 00:28:55
Re: Lichter in DirectX8 - (Nick-)Name 14. Juni 2011 um 21:36:16
Re: Lichter in DirectX8 - Michael Kenzel 14. Juni 2011 um 21:50:29
Re: Lichter in DirectX8 - (Nick-)Name 14. Juni 2011 um 23:50:35
Re: Lichter in DirectX8 - Michael Kenzel 15. Juni 2011 um 00:30:25
Re: Lichter in DirectX8 - Nico 15. Juni 2011 um 10:28:28
Re: Lichter in DirectX8 - Michael Kenzel 15. Juni 2011 um 10:50:30
Re: Lichter in DirectX8 - Nico 15. Juni 2011 um 10:51:54
Re: Lichter in DirectX8 - Michael Kenzel 15. Juni 2011 um 10:59:58
Re: Lichter in DirectX8 - (Nick-)Name 15. Juni 2011 um 12:14:26
Re: Lichter in DirectX8 - (Nick-)Name 05. Juli 2011 um 16:42:01

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  DirectX 8
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum DirectX-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | .Net-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015