modfloor.bas

来自「一个游戏的原代码」· BAS 代码 · 共 42 行

BAS
42
字号
Attribute VB_Name = "modFloor"
Option Explicit
'This module genarates and render a simple floor
'It will generate two floors, because our floor should be visible from both sides :)

'The Vertices
Private Type FVert
    pos As D3DVECTOR
    col As Long
    tex1 As D3DVECTOR2
End Type
Public Const FLOORVERT_SIZE As Long = 24
Public Const FLOORVERT_FVF As Long = (D3DFVF_XYZ Or D3DFVF_DIFFUSE Or D3DFVF_TEX1)
Public FVertex(3) As FVert

Public FloorTex As Direct3DTexture8
Public FloorMat As D3DMATERIAL8
Public FloorBuffer As Direct3DVertexBuffer8
Private tempDesc As D3DSURFACE_DESC

Public Sub CreateFloor(fY As Single, Optional TexPath As String)
'Load the textures
If TexPath <> "" Then
Set FloorTex = D3DX.CreateTextureFromFileEx(D3Ddevice, TexPath, 0, 0, D3DX_DEFAULT, 0, D3DFMT_R8G8B8, D3DPOOL_MANAGED, D3DX_FILTER_LINEAR, D3DX_FILTER_LINEAR, 0, ByVal 0, ByVal 0)
End If

FVertex(0) = CreateVertex(-100, fY, 100, 1, 1)
FVertex(1) = CreateVertex(-100, fY, -100, 1, 0)
FVertex(2) = CreateVertex(100, fY, 100, 0, 1)
FVertex(3) = CreateVertex(100, fY, -100, 0, 0)

Set FloorBuffer = D3Ddevice.CreateVertexBuffer(4 * FLOORVERT_SIZE, D3DUSAGE_WRITEONLY, FLOORVERT_FVF, D3DPOOL_MANAGED)
D3DVertexBuffer8SetData FloorBuffer, 0, 4 * FLOORVERT_SIZE, 0, FVertex(0)
End Sub

Public Sub RenderFloor(tex As Direct3DTexture8)
D3Ddevice.SetRenderState D3DRS_LIGHTING, 0
D3Ddevice.SetRenderState D3DRS_ALPHABLENDENABLE, 1
D3Ddevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
D3Ddevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA

'Wichtig, damit D3D wei

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?