Code: Select all
;
; ------------------------------------------------------------
;
; PureBasic - SetMeshMaterial
;
; (c) 2012 - Fantaisie Software
;
; ------------------------------------------------------------
;
#CameraSpeed = 1
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY
Define.f x, y, z, nx, ny, nz, u, v
Define.l Co
Define.w t1, t2, t3
If InitEngine3D()
Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
; Create a cube manually
;
; Define all the vertices and their attributes
CreateMesh(0)
AddMeshVertex(-0.5,0.5,-0.5)
MeshVertexTextureCoordinate(0,0)
AddMeshVertex(0.5,0.5,-0.5)
MeshVertexTextureCoordinate(0,1)
AddMeshVertex(0.5,0.5,0.5)
MeshVertexTextureCoordinate(1,1)
AddMeshVertex(-0.5,0.5,0.5)
MeshVertexTextureCoordinate(1,0)
; Define all the faces, based on the vertex index
AddMeshFace(2,1,0)
AddMeshFace(0,3,2)
AddSubMesh()
AddMeshVertex(-0.5,-0.5,0.5)
MeshVertexTextureCoordinate(0,0)
AddMeshVertex(0.5,-0.5,0.5)
MeshVertexTextureCoordinate(0,1)
AddMeshVertex(0.5,-0.5,-0.5)
MeshVertexTextureCoordinate(1,1)
AddMeshVertex(-0.5,-0.5,-0.5)
MeshVertexTextureCoordinate(1,0)
; Define all the faces, based on the vertex index
AddMeshFace(2,1,0)
AddMeshFace(0,3,2)
AddSubMesh()
AddMeshVertex(-0.5,0.5,0.5)
MeshVertexTextureCoordinate(0,0)
AddMeshVertex(0.5,0.5,0.5)
MeshVertexTextureCoordinate(0,1)
AddMeshVertex(0.5,-0.5,0.5)
MeshVertexTextureCoordinate(1,1)
AddMeshVertex(-0.5,-0.5,0.5)
MeshVertexTextureCoordinate(1,0)
; Define all the faces, based on the vertex index
AddMeshFace(2,1,0)
AddMeshFace(0,3,2)
AddSubMesh()
AddMeshVertex(0.5,0.5,-0.5)
MeshVertexTextureCoordinate(0,0)
AddMeshVertex(-0.5,0.5,-0.5)
MeshVertexTextureCoordinate(0,1)
AddMeshVertex(-0.5,-0.5,-0.5)
MeshVertexTextureCoordinate(1,1)
AddMeshVertex(0.5,-0.5,-0.5)
MeshVertexTextureCoordinate(1,0)
; Define all the faces, based on the vertex index
AddMeshFace(2,1,0)
AddMeshFace(0,3,2)
AddSubMesh()
AddMeshVertex(-0.5,0.5,-0.5)
MeshVertexTextureCoordinate(0,0)
AddMeshVertex(-0.5,0.5,0.5)
MeshVertexTextureCoordinate(0,1)
AddMeshVertex(-0.5,-0.5,0.5)
MeshVertexTextureCoordinate(1,1)
AddMeshVertex(-0.5,-0.5,-0.5)
MeshVertexTextureCoordinate(1,0)
; Define all the faces, based on the vertex index
AddMeshFace(2,1,0)
AddMeshFace(0,3,2)
AddSubMesh()
AddMeshVertex(0.5,0.5,0.5)
MeshVertexTextureCoordinate(0,0)
AddMeshVertex(0.5,0.5,-0.5)
MeshVertexTextureCoordinate(0,1)
AddMeshVertex(0.5,-0.5,-0.5)
MeshVertexTextureCoordinate(1,1)
AddMeshVertex(0.5,-0.5,0.5)
MeshVertexTextureCoordinate(1,0)
; Define all the faces, based on the vertex index
AddMeshFace(2,1,0)
AddMeshFace(0,3,2)
FinishMesh()
NormalizeMesh(0)
UpdateMeshBoundingBox(0)
; Material
CreateMaterial(0, LoadTexture(0, "Geebee2.bmp"))
CreateMaterial(1, LoadTexture(1, "RustySteel.jpg"))
CreateMaterial(2, LoadTexture(2, "Dirt.jpg"))
CreateMaterial(3, LoadTexture(3, "Clouds.jpg"))
CreateMaterial(4, LoadTexture(4, "Wood.jpg"))
CreateMaterial(5, LoadTexture(5, "caisse.png"))
SetMeshMaterial(0, MaterialID(0), 0)
SetMeshMaterial(0, MaterialID(1), 1)
SetMeshMaterial(0, MaterialID(2), 2)
SetMeshMaterial(0, MaterialID(3), 3)
SetMeshMaterial(0, MaterialID(4), 4)
SetMeshMaterial(0, MaterialID(5), 5)
CreateEntity(0, MeshID(0), #PB_Material_None)
ScaleEntity(0, 200, 200, 200)
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0, 0, 0, 1000)
CreateLight(0, RGB(255,255,255), 300, 600, -100)
AmbientColor(RGB(80, 80, 80))
Repeat
Screen3DEvents()
ExamineMouse()
ExamineKeyboard()
RotateEntity(0, 1, 1, 1, #PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized", 0)
EndIf
End