|
>Public Sub Load_TEXTUR(ByVal FileName As String, _
ByRef objDDSurface As DirectDrawSurface7)
Dim TexDesc As DDSURFACEDESC2
Dim TempMipMap As DirectDrawSurface7
Dim TempSurface As DirectDrawSurface7
Dim MipMapDesc As DDSURFACEDESC2
Dim tempdesc As DDSURFACEDESC2
Dim SourceRect As RECT
Dim DestRect As RECT
Dim DDSC As DDSCAPS2
Dim Index As Integer
With MipMapDesc
.lFlags = DDSD_CAPS Or DDSD_MIPMAPCOUNT Or DDSD_WIDTH Or _
DDSD_HEIGHT
.lMipMapCount = 5
.ddsCaps.lCaps = DDSCAPS_TEXTURE Or DDSCAPS_MIPMAP Or _
DDSCAPS_COMPLEX
.ddsCaps.lCaps2 = DDSCAPS2_TEXTUREMANAGE
.lWidth = 128
.lHeight = 128
End With
Set objDDSurface = DD7.CreateSurface(MipMapDesc)
Set TempMipMap = objDDSurface
Index = 0
Do
Dim newdesc As DDSURFACEDESC2
TempMipMap.GetSurfaceDesc tempdesc
newdesc.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Or _
DDSCAPS_SYSTEMMEMORY
newdesc.lFlags = DDSD_CAPS
Set TempSurface = DD7.CreateSurfaceFromFile(Left(FileName, _
Len(FileName) - 4) & Trim$(Str$(Index)) & ".bmp", MipMapDesc)
DestRect.Right = tempdesc.lWidth
DestRect.Bottom = tempdesc.lHeight
SourceRect.Right = newdesc.lWidth
SourceRect.Bottom = newdesc.lHeight
TempMipMap.Blt DestRect, TempSurface, SourceRect, DDBLT_WAIT
DDSC.lCaps = DDSCAPS_MIPMAP Or DDSCAPS_TEXTURE
On Local Error Resume Next
Set TempMipMap = TempMipMap.GetAttachedSurface(DDSC)
If Err.Number = DDERR_NOTFOUND Then Exit Do
Index = Index + 1
Loop
Set TempSurface = Nothing
Set TempMipMap = Nothing
End Sub
Public Sub Render3D()
Dim i As Integer
Device.Clear 1, ClearRec(), D3DCLEAR_TARGET Or _
D3DCLEAR_ZBUFFER, DX7.CreateColorRGB(0, 0, 0), 1, 0
Device.BeginScene
If MipMapFilter Then
Call Device.SetTextureStageState( _
0, D3DTSS_MIPFILTER, D3DTFP_LINEAR)
Else
Call Device.SetTextureStageState( _
0, D3DTSS_MIPFILTER, D3DTFP_NONE)
End If
Call Device.SetTextureStageState( _
0, D3DTSS_MAGFILTER, D3DTFG_LINEAR)
Call Device.SetTextureStageState( _
0, D3DTSS_MINFILTER, D3DTFG_LINEAR)
For i = 0 To GroupCount - 1
Call Device.SetTexture(0, Groups(i).Texture)
Call Device.DrawPrimitive( _
D3DPT_TRIANGLELIST, D3DFVF_LVERTEX, _
Groups(i).RenderVertexList(0), _
UBound(Groups(i).RenderVertexList) + 1, _
D3DDP_WAIT)
Next
Device.EndScene
End Sub
|
|