/[cvs]/rabit/RaBit's Rapid Racers/Form_D3D.frm
ViewVC logotype

Annotation of /rabit/RaBit's Rapid Racers/Form_D3D.frm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Tue Mar 12 21:23:07 2002 UTC (22 years, 9 months ago) by cvsrabit
Branch point for: NFO, MAIN
Initial revision

1 cvsrabit 1.1 VERSION 5.00
2     Begin VB.Form Form_D3D
3     BorderStyle = 5 'Sizable ToolWindow
4     Caption = "RRR"
5     ClientHeight = 7200
6     ClientLeft = 60
7     ClientTop = 345
8     ClientWidth = 9600
9     ClipControls = 0 'False
10     FillStyle = 0 'Solid
11     BeginProperty Font
12     Name = "Terminal"
13     Size = 6
14     Charset = 255
15     Weight = 700
16     Underline = 0 'False
17     Italic = 0 'False
18     Strikethrough = 0 'False
19     EndProperty
20     KeyPreview = -1 'True
21     MinButton = 0 'False
22     ScaleHeight = 480
23     ScaleMode = 3 'Pixel
24     ScaleWidth = 640
25     ShowInTaskbar = 0 'False
26     StartUpPosition = 3 'Windows Default
27     Begin VB.PictureBox Picture_TrackMap
28     Appearance = 0 'Flat
29     AutoSize = -1 'True
30     BackColor = &H80000005&
31     BorderStyle = 0 'None
32     ClipControls = 0 'False
33     FillStyle = 0 'Solid
34     ForeColor = &H80000008&
35     Height = 6000
36     Left = 0
37     ScaleHeight = 400
38     ScaleMode = 3 'Pixel
39     ScaleWidth = 400
40     TabIndex = 0
41     Top = 0
42     Visible = 0 'False
43     Width = 6000
44     End
45     End
46     Attribute VB_Name = "Form_D3D"
47     Attribute VB_GlobalNameSpace = False
48     Attribute VB_Creatable = False
49     Attribute VB_PredeclaredId = True
50     Attribute VB_Exposed = False
51     Option Explicit
52     '
53    
54     Public Function Initialise() As Boolean
55    
56     Dim lAdapter As Long
57     Dim lD3DCreateFlags As CONST_D3DCREATEFLAGS
58    
59     Dim fcDevCaps As D3DCAPS8
60    
61     Dim matProjection As D3DMATRIX
62    
63     lAdapter = D3DADAPTER_DEFAULT
64    
65     On Error GoTo ErrHandler
66    
67     ConPrint Const_strConsoleBlockTitlePre + "testing device features:" + Const_strConsoleBlockTitlePost
68     ConPrint " " & clSystem.D3D8.GetAdapterCount & " display adapter(s) found.[brk][brk]"
69    
70     With tpD3DPresentParameters
71    
72     If Form_Start.Check_Windowed.Value = 1 Then
73    
74     clSystem.D3D8.GetAdapterDisplayMode lAdapter, tpUsedDispMode
75    
76     .BackBufferCount = 1
77     .BackBufferFormat = tpUsedDispMode.Format
78    
79     .Windowed = 1
80    
81     Else
82    
83     clSystem.D3D8.EnumAdapterModes 0, Form_Start.Combo_RefreshRate.ItemData(Form_Start.Combo_RefreshRate.ListIndex), tpUsedDispMode
84    
85     .BackBufferCount = 1
86     .BackBufferFormat = tpUsedDispMode.Format
87     .BackBufferWidth = tpUsedDispMode.Width
88     .BackBufferHeight = tpUsedDispMode.Height
89     .FullScreen_RefreshRateInHz = tpUsedDispMode.RefreshRate
90     ' .FullScreen_PresentationInterval = 0
91    
92     End If
93    
94     .hDeviceWindow = Form_D3D.hWnd
95    
96     .AutoDepthStencilFormat = D3DFMT_D16
97     .EnableAutoDepthStencil = 1
98    
99     ' .SwapEffect = D3DSWAPEFFECT_FLIP
100    
101     If Form_Start.Check_Antialias.Value = 1 Then
102    
103     .SwapEffect = D3DSWAPEFFECT_DISCARD
104    
105     If Form_Start.Option_MultisampleType2.Value = True Then
106    
107     If clSystem.D3D8.CheckDeviceMultiSampleType(lAdapter, D3DDEVTYPE_HAL, D3DFMT_R8G8B8, .Windowed, D3DMULTISAMPLE_2_SAMPLES) Then .MultiSampleType = D3DMULTISAMPLE_2_SAMPLES
108    
109     ElseIf Form_Start.Option_MultisampleType4.Value = True Then
110    
111     If clSystem.D3D8.CheckDeviceMultiSampleType(lAdapter, D3DDEVTYPE_HAL, D3DFMT_R8G8B8, .Windowed, D3DMULTISAMPLE_4_SAMPLES) Then .MultiSampleType = D3DMULTISAMPLE_4_SAMPLES
112    
113     End If
114    
115     Else
116    
117     .SwapEffect = D3DSWAPEFFECT_COPY '_VSYNC
118    
119     End If
120    
121     If .MultiSampleType > D3DMULTISAMPLE_NONE Then
122    
123     ConPrint " antialiasing type is [c02]" & .MultiSampleType & "x multisampling[c07].[brk]"
124    
125     Else
126    
127     ConPrint " antialiasing is [c12]deactivated[c07].[brk]"
128    
129     End If
130    
131     End With
132    
133     '############################
134     '## CHECK THE DEVICE CAPABILITIES ##
135     '###########################
136    
137     On Local Error Resume Next
138    
139     clSystem.D3D8.GetDeviceCaps lAdapter, D3DDEVTYPE_HAL, fcDevCaps
140    
141     If Err.Number = D3DERR_INVALIDDEVICE Then
142    
143     'We couldn't get data from the hardware device - probably doesn't exist...
144     clSystem.D3D8.GetDeviceCaps lAdapter, D3DDEVTYPE_REF, fcDevCaps
145     Err.Clear ' Remove the error value..
146    
147     End If
148    
149     ConPrint " hardware transform and lighting... "
150    
151     '...for Hardware vertex processing:
152     If (fcDevCaps.DevCaps And D3DDEVCAPS_HWTRANSFORMANDLIGHT) Then
153    
154     lD3DCreateFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING
155     ConPrint Const_strConsoleTextOK
156    
157     Else
158    
159     lD3DCreateFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING
160     ConPrint Const_strConsoleTextFail
161    
162     End If
163    
164     ConPrint " pure device support... "
165    
166     '...for Pure Device processing:
167     If (fcDevCaps.DevCaps And D3DDEVCAPS_PUREDEVICE) Then
168    
169     lD3DCreateFlags = lD3DCreateFlags Or D3DCREATE_PUREDEVICE
170     ConPrint Const_strConsoleTextOK
171    
172     Else
173    
174     ConPrint Const_strConsoleTextFail
175    
176     End If
177    
178     Dim fcPRasterCapsFlags As CONST_D3DPRASTERCAPSFLAGS
179    
180     fcPRasterCapsFlags = fcDevCaps.RasterCaps
181    
182     ConPrint " colour dithering... "
183    
184     If (fcPRasterCapsFlags And D3DPRASTERCAPS_DITHER) Then ConPrint Const_strConsoleTextOK Else ConPrint Const_strConsoleTextFail
185    
186     fcPRasterCapsFlags = fcDevCaps.RasterCaps
187    
188     ConPrint " anisotropic filtering... "
189    
190     If (fcPRasterCapsFlags And D3DPRASTERCAPS_ANISOTROPY) Then ConPrint Const_strConsoleTextOK Else ConPrint Const_strConsoleTextFail
191    
192     ConPrint " edge antialiasing... "
193    
194     If (fcPRasterCapsFlags And D3DPRASTERCAPS_ANTIALIASEDGES) Then ConPrint Const_strConsoleTextOK Else ConPrint Const_strConsoleTextFail
195    
196     ConPrint " range-based fog... "
197    
198     If (fcPRasterCapsFlags And D3DPRASTERCAPS_FOGRANGE) Then ConPrint Const_strConsoleTextOK Else ConPrint Const_strConsoleTextFail
199    
200     ' This line creates a device that uses a hardware device if possible; software vertex processing and uses the form as it's target
201     Set clD3DDevice = clSystem.D3D8.CreateDevice(lAdapter, D3DDEVTYPE_HAL, Form_D3D.hWnd, lD3DCreateFlags, tpD3DPresentParameters)
202    
203     ' Configure the rendering device
204     clD3DDevice.SetVertexShader Const_lFVF_Vertex '//Tell it what type of vertex we are using
205     clD3DDevice.SetRenderState D3DRS_LIGHTING, 1 '//Enable lighting.
206     clD3DDevice.SetRenderState D3DRS_ZENABLE, 1
207     clD3DDevice.SetRenderState D3DRS_CULLMODE, D3DCULL_NONE
208    
209     If tpD3DPresentParameters.MultiSampleType > 0 Then clD3DDevice.SetRenderState D3DRS_MULTISAMPLE_ANTIALIAS, 1
210    
211     ' clD3DDevice.SetRenderState D3DRS_ALPHABLENDENABLE, 1
212     ' clD3DDevice.SetRenderState D3DRS_RANGEFOGENABLE, 1
213    
214     ' clD3DDevice.SetRenderState D3DRS_DITHERENABLE, True
215     ' clD3DDevice.SetRenderState D3DRS_EDGEANTIALIAS, True
216     ' clD3DDevice.SetRenderState D3DRS_SPECULARENABLE, True
217     ' clD3DDevice.SetRenderState D3DRS_FOGENABLE, True
218    
219     '//configure the world matrices
220    
221     '//1. The World Matrix
222     ' D3DXMatrixIdentity matWorld
223     clD3DDevice.SetTransform D3DTS_WORLD, tpMatIdentity 'commit this matrix to the device
224    
225     '//3. The projection Matrix
226     D3DXMatrixPerspectiveFovLH matProjection, 0.3 * Const_sgPi, tpUsedDispMode.Height / tpUsedDispMode.Width, 0.1, 300
227     clD3DDevice.SetTransform D3DTS_PROJECTION, matProjection
228    
229     Initialise = True '//We succeeded
230    
231     ConPrint "[brk]"
232    
233     Exit Function
234    
235     ErrHandler:
236    
237     Initialise = False
238     ConPrint "[brk][c03]error returned:[brk]no. " & Err.Number & ": " + Err.Description + "[c15][brk]"
239    
240     End Function
241    
242     Public Sub Render()
243    
244     Dim clCurrentObject As Class_GeoObject
245     Dim clPlayer As Class_Player
246    
247     Dim bIsPlayerObject As Boolean
248    
249     Dim tpMatTemp1 As D3DMATRIX
250     Dim tpMatTemp2 As D3DMATRIX
251    
252     Dim l As Long
253     Dim lPlayerIndex As Long
254     Dim lVertexCount As Long
255    
256     Dim tpVecPlayerPosition As D3DVECTOR
257    
258     With clD3DDevice
259    
260     If Not lplKeyControlFlags(vbKeyQ) Then .Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, clScene.lBackgroundColour, 1#, 0
261     ' .Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, clScene.lBackgroundColour, 1#, 0
262    
263     ' SetupLighting
264    
265     .BeginScene
266    
267     ' SetupPixelFog D3DColorXRGB(1#, 1#, 1#), D3DFOG_LINEAR
268    
269     For l = 1 To clScene.Col_clGeoObjects.Count
270    
271     Set clCurrentObject = clScene.Col_clGeoObjects(l)
272    
273     bIsPlayerObject = LCase(Left(clCurrentObject.strName, 3)) = "pla"
274    
275     If bIsPlayerObject Then
276    
277     For lPlayerIndex = 1 To clGame.Col_clPlayers.Count
278    
279     Set clPlayer = clGame.Col_clPlayers(lPlayerIndex)
280    
281     If bShowPlayer Or clPlayer.lPlayerType <> ePT_LocalHuman Then
282    
283     tpMatTemp1 = tpMatIdentity
284    
285     tpVecPlayerPosition = clPlayer.GetPosition
286    
287     D3DXMatrixTranslation tpMatTemp1, clCurrentObject.sgPositionX, -clCurrentObject.sgPositionZ, clCurrentObject.sgPositionY
288    
289     tpMatTemp2 = tpMatIdentity
290     D3DXMatrixRotationY tpMatTemp2, -clPlayer.sgAngleY * Const_sgDeg2Rad
291     D3DXMatrixMultiply tpMatTemp1, tpMatTemp1, tpMatTemp2
292    
293     tpMatTemp2 = tpMatIdentity
294     D3DXMatrixTranslation tpMatTemp2, tpVecPlayerPosition.X, tpVecPlayerPosition.Y, tpVecPlayerPosition.Z
295     D3DXMatrixMultiply tpMatTemp1, tpMatTemp1, tpMatTemp2
296    
297     .SetTransform D3DTS_WORLD, tpMatTemp1
298     RenderGeoObject clCurrentObject
299    
300     End If
301    
302     Next lPlayerIndex
303    
304     Else
305    
306     .SetTransform D3DTS_WORLD, tpMatIdentity
307     RenderGeoObject clCurrentObject
308    
309     End If
310    
311     Next l
312    
313     DrawOverlay
314    
315     .EndScene
316    
317     .Present ByVal 0, ByVal 0, 0, ByVal 0
318    
319     End With
320    
321     End Sub
322    
323     Private Function CheckDisplayMode(Width As Long, Height As Long, Depth As Long) As CONST_D3DFORMAT
324    
325     Dim i As Long
326     Dim tpUsedDispMode As D3DDISPLAYMODE
327    
328     For i = 0 To clSystem.D3D8.GetAdapterModeCount(0) - 1
329    
330     clSystem.D3D8.EnumAdapterModes 0, i, tpUsedDispMode
331    
332     If tpUsedDispMode.Width = Width Then
333    
334     If tpUsedDispMode.Height = Height Then
335    
336     If tpUsedDispMode.Format = D3DFMT_R5G6B5 Or D3DFMT_X1R5G5B5 Or D3DFMT_X4R4G4B4 Then
337    
338     '16 bit mode
339     If Depth = 16 Then
340    
341     CheckDisplayMode = tpUsedDispMode.Format
342     Exit Function
343    
344     End If
345    
346     ElseIf tpUsedDispMode.Format = D3DFMT_R8G8B8 Or D3DFMT_X8R8G8B8 Then
347    
348     '32bit mode
349     If Depth = 32 Then
350    
351     CheckDisplayMode = tpUsedDispMode.Format
352     Exit Function
353    
354     End If
355    
356     End If
357    
358     End If
359    
360     End If
361    
362     Next i
363    
364     CheckDisplayMode = D3DFMT_UNKNOWN
365    
366     End Function
367    
368     Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
369    
370     If KeyCode = vbKeyEscape Then
371    
372     If lMenuIndex = 0 Then
373    
374     lMenuIndex = 1
375     lMenuSelectedItem = 0
376    
377     Else
378    
379     lMenuIndex = 0
380    
381     End If
382    
383     ElseIf lMenuIndex = 0 Then
384    
385     ' If KeyCode = vbKeyE Then
386     '
387     ' clD3DDevice.SetRenderState D3DRS_LIGHTING, 1 'Enable lighting.
388     '
389     ' ElseIf KeyCode = vbKeyD Then
390     '
391     ' clD3DDevice.SetRenderState D3DRS_LIGHTING, 0 'Disable lighting.
392     '
393     ' ElseIf KeyCode = vbKeyW Then
394     '
395     ' clD3DDevice.SetRenderState D3DRS_FILLMODE, D3DFILL_WIREFRAME 'Set wireframe rendering.
396     '
397     ' ElseIf KeyCode = vbKeyS Then
398     '
399     ' clD3DDevice.SetRenderState D3DRS_FILLMODE, D3DFILL_SOLID 'Set solid rendering.
400     '
401     ' Else
402    
403     If KeyCode = vbKeyC Then
404    
405     lCamMode = lCamMode + 1
406    
407     If lCamMode = 6 Then lCamMode = 0
408    
409     Else
410    
411     If lLocalPlayerHandle <> 0 Then
412    
413     clGame.Col_clPlayers("p" & lLocalPlayerHandle).lPlayerControlFlags = clGame.Col_clPlayers("p" & lLocalPlayerHandle).lPlayerControlFlags Or lplKeyControlFlags(KeyCode)
414     ' Debug.Print clGame.Col_clPlayers("p" & lLocalPlayerHandle).lPlayerControlFlags
415    
416     End If
417    
418     End If
419    
420     Else
421    
422     If KeyCode = vbKeyReturn Then
423    
424     Dim lpstrArguments() As String
425    
426     lpstrArguments = Split(Col_clMenus(lMenuIndex).Item(lMenuSelectedItem + 1).strCommand, " ")
427    
428     If UBound(lpstrArguments) >= 0 Then
429    
430     Select Case lpstrArguments(0)
431    
432     Case "exit"
433    
434     clGame.RemoveAllPlayers
435     DeleteScene
436    
437     Case "menu"
438    
439     lMenuIndex = Val(lpstrArguments(1))
440     lMenuSelectedItem = 0
441    
442     Case "quit"
443    
444     bRunning = False
445     clGame.RemoveAllPlayers
446     DeleteScene
447    
448     Case "single"
449    
450     lMenuIndex = 0
451     DoEvents
452     StartSinglePlayerGame
453    
454     End Select
455    
456     End If
457    
458     ElseIf KeyCode = vbKeyDown Then
459    
460     lMenuSelectedItem = lMenuSelectedItem + 1
461    
462     If lMenuSelectedItem >= Col_clMenus(lMenuIndex).Count Then lMenuSelectedItem = 0
463    
464     ElseIf KeyCode = vbKeyUp Then
465    
466     lMenuSelectedItem = lMenuSelectedItem - 1
467    
468     If lMenuSelectedItem < 0 Then lMenuSelectedItem = Col_clMenus(lMenuIndex).Count - 1
469    
470     End If
471    
472     End If
473    
474     End Sub
475    
476     Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
477    
478     ' lplKeyControlFlags(KeyCode) = False
479    
480     If lLocalPlayerHandle <> 0 Then clGame.Col_clPlayers("p" & lLocalPlayerHandle).lPlayerControlFlags = clGame.Col_clPlayers("p" & lLocalPlayerHandle).lPlayerControlFlags And Not lplKeyControlFlags(KeyCode)
481    
482     End Sub
483    
484     Private Sub Form_Load()
485    
486     Me.Show
487    
488     bRunning = Initialise()
489    
490     If bRunning Then
491    
492     SetupOverlay
493    
494     SetupKeyCommands
495     SetupLighting
496    
497     If Form_Start.Check_Windowed.Value = 1 Then
498    
499     tpUsedDispMode.Width = Me.ScaleWidth
500     tpUsedDispMode.Height = Me.ScaleHeight
501    
502     End If
503    
504     ConPrint Const_strConsoleTextLine + _
505     Const_strConsoleTextLineIndent + "[c14]key commands:[c15][brk]" + _
506     Const_strConsoleTextLine + _
507     Const_strConsoleTextLineIndent + " up ... accelerate forward[brk]" + _
508     Const_strConsoleTextLineIndent + " down ... accelerate backward[brk]" + _
509     Const_strConsoleTextLineIndent + "left/right ... rotate steering wheel[brk]" + _
510     Const_strConsoleTextLineIndent + " space ... break[brk]" + _
511     Const_strConsoleTextLineIndent + " shift ... use horn[brk]" + _
512     Const_strConsoleTextLineIndent + " c ... change camera mode[brk]" + _
513     Const_strConsoleTextLineIndent + " esc ... show/hide menu[brk]" + _
514     Const_strConsoleTextLine
515    
516     ' Const_strConsoleTextLineIndent + " w/s ... wireframe/solid render mode[brk]" + _
517     ' Const_strConsoleTextLineIndent + " e/d ... enable/disable lighted shading[brk]" + _
518    
519     clSystem.DS8SetCooperativeLevel Form_D3D.hWnd
520    
521     End If
522    
523     MainLoop
524    
525     On Error Resume Next
526    
527     Set clD3DDevice = Nothing
528     ' Set D3D = Nothing
529     ' Set DX = Nothing
530    
531     ' clDSSoundBuffer1.Stop
532     ' clDSSoundBuffer2.Stop
533     ' clDSSoundBuffer3.Stop
534    
535     Form_Start.Command_Start.Enabled = True
536     Unload Me
537    
538     End
539    
540     End Sub
541    
542     Private Sub SetupLighting()
543    
544     Dim lghtDirectional As D3DLIGHT8
545     Dim lghtSpot As D3DLIGHT8
546     Dim lghtPoint1 As D3DLIGHT8
547     Dim lghtPoint2 As D3DLIGHT8
548    
549     Dim vecLight As D3DVECTOR
550    
551     With lghtDirectional
552    
553     .Type = D3DLIGHT_DIRECTIONAL
554     .Direction = MakeVector(-0.4, -0.8, 0.2)
555     .Position = MakeVector(1, 1, 1) ' shouldn't be left as 0
556     .Range = 100 ' shouldn't be left as 0
557     .diffuse = CreateD3DColorVal(1, 1, 1, 0.9) ' light yellow (sun) light
558     .Ambient = .diffuse
559    
560     End With
561    
562     With lghtSpot
563    
564     .Type = D3DLIGHT_SPOT
565     .Range = 30#
566     .diffuse = CreateD3DColorVal(1, 0.95, 0.95, 1)
567     ' .Direction = MakeVector(Sin(clPlayer.sgAngleY / Const_sgRad2Deg), 0, -Cos(clPlayer.sgAngleY / Const_sgRad2Deg))
568     ' .Position = MakeVector(clPlayer.sgPosX, clPlayer.sgPosY + 1.5, clPlayer.sgPosZ)
569     .Theta = 0.1 * Const_sgPi
570     .Phi = 0.4 * Const_sgPi
571     .Attenuation0 = 0.05
572     .Attenuation1 = 0.05
573     .Attenuation2 = 0
574    
575     End With
576    
577     With lghtPoint1
578    
579     .Type = D3DLIGHT_POINT
580     .diffuse = CreateD3DColorVal(1, 1, 1, 0.95)
581     .Position = MakeVector(-300, 100, -300)
582     .Range = 500#
583     .Attenuation0 = 0.01
584     .Attenuation1 = 0.01 '1#
585     .Attenuation2 = 0#
586    
587     End With
588    
589     With lghtPoint2
590    
591     .Type = D3DLIGHT_POINT
592     .diffuse = CreateD3DColorVal(1, 1, 1, 0.95)
593     .Position = MakeVector(300, 100, 300)
594     .Range = 500#
595     .Attenuation0 = 0.01
596     .Attenuation1 = 0.01 '1#
597     .Attenuation2 = 0#
598    
599     End With
600    
601     clD3DDevice.SetLight 0, lghtDirectional
602     ' clD3DDevice.SetLight 1, lghtSpot
603     ' clD3DDevice.SetLight 2, lghtPoint1
604     ' clD3DDevice.SetLight 3, lghtPoint2
605    
606     clD3DDevice.LightEnable 0, 1
607     ' clD3DDevice.LightEnable 1, 0
608     ' clD3DDevice.LightEnable 2, 0
609     ' clD3DDevice.LightEnable 3, 0
610    
611     ' clD3DDevice.SetRenderState D3DRS_AMBIENT, RGB(160, 160, 160)
612     clD3DDevice.SetRenderState D3DRS_AMBIENT, clScene.lAmbientLightColour
613    
614     End Sub
615    
616     Private Sub Form_Resize()
617    
618     Me.Caption = Const_strApplicationShortName + " - (" & Me.ScaleWidth & " x " & Me.ScaleHeight & ")"
619    
620     'tpUsedDispMode.Width = Me.ScaleWidth
621     'tpUsedDispMode.Height = Me.ScaleHeight
622    
623     End Sub
624    
625     Sub SetupPixelFog(lColor As Long, fcMode As CONST_D3DFOGMODE)
626    
627     Dim sgStartFog As Single
628     Dim sgEndFog As Single
629     Dim sgDensity As Single
630    
631     ' For linear mode
632     sgStartFog = 1: sgEndFog = 2
633    
634     ' For exponential mode
635     sgDensity = 0.8
636     ' sgDensity = 0.1
637    
638     ' Enable fog blending.
639     clD3DDevice.SetRenderState D3DRS_FOGENABLE, 1
640    
641     ' Set the fog color.
642     clD3DDevice.SetRenderState D3DRS_FOGCOLOR, lColor
643    
644     ' Set fog parameters.
645     If fcMode = D3DFOG_LINEAR Then
646    
647     clD3DDevice.SetRenderState D3DRS_FOGVERTEXMODE, fcMode
648     clD3DDevice.SetRenderState D3DRS_FOGTABLEMODE, fcMode
649     clD3DDevice.SetRenderState D3DRS_FOGSTART, sgStartFog
650     clD3DDevice.SetRenderState D3DRS_FOGEND, sgEndFog
651    
652     Else
653    
654     clD3DDevice.SetRenderState D3DRS_FOGVERTEXMODE, fcMode
655     clD3DDevice.SetRenderState D3DRS_FOGTABLEMODE, fcMode
656     clD3DDevice.SetRenderState D3DRS_FOGDENSITY, sgDensity
657    
658     End If
659    
660     clD3DDevice.SetRenderState D3DRS_RANGEFOGENABLE, 1
661    
662     End Sub
663    
664     Private Sub RenderGeoObject(clGeoObject As Class_GeoObject)
665    
666     Dim clCurrentVertexBuffer As Direct3DVertexBuffer8
667     'Dim tpVertexBufferDescription As D3DVERTEXBUFFER_DESC
668    
669     With clD3DDevice
670    
671     On Local Error Resume Next
672    
673     .SetTexture 0, gCol_Geo_TexDiffuseTextures("t" & clGeoObject.lMaterialIndex)
674    
675     If Err.Number = 0 Then GoTo lblContinue
676    
677     lblSetNoTex:
678    
679     .SetTexture 0, Nothing
680    
681     lblContinue:
682    
683     On Error GoTo 0
684    
685     .SetMaterial lptpMatSceneMaterials(clGeoObject.lMaterialIndex)
686    
687     Set clCurrentVertexBuffer = clGeoObject.D3DVertexBuffer
688    
689     .SetStreamSource 0, clCurrentVertexBuffer, Len(tpDummyVertex)
690     .DrawPrimitive D3DPT_TRIANGLELIST, 0, clGeoObject.lVertexCount / 3
691    
692     End With
693    
694     End Sub
695    
696     Public Function MainLoop()
697    
698     Do While bRunning
699    
700     clGame.MovePlayers
701     RenderSounds
702    
703     If clGame.Col_clPlayers.Count > 1 Then Form_NetworkListen.SendPlayerData
704    
705     Render
706    
707     lFramesCount = lFramesCount + 1
708    
709     DoEvents
710    
711     Loop
712    
713     End Function

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed