Code: Select all
;Comtois le 04/03/06
;PB4 beta 5
;- Initialisation
If InitEngine3D() = 0
MessageRequester( "Erreur" , "Impossible d'initialiser la 3D , vérifiez la présence de engine3D.dll" , 0 )
End
ElseIf InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse()=0
MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 )
End
ElseIf OpenScreen( 800 , 600 , 32 , "M3D_Matrix3D" ) = 0
MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 )
End
EndIf
Structure Vertex
px.f
py.f
pz.f
nx.f
ny.f
nz.f
co.l
tu.f
tv.f
EndStructure
Structure Face
p1.w
p2.w
p3.w
p4.w
p5.w
p6.w
EndStructure
Structure s_Cube
No.l
EndStructure
Structure s_Angle
AngleX.f
AngleY.f
AngleZ.f
EndStructure
Macro MaCouleur(Rouge,Vert,Bleu)
Rouge << 16 + Vert << 8 + Bleu
EndMacro
;-Texture
CreateTexture(0,64,64)
StartDrawing(TextureOutput(0))
Box(0,0,64,64,$111111)
Box(1,1,62,62,$FFFFFF)
StopDrawing()
;-Material
CreateMaterial(0,TextureID(0))
MaterialAmbientColor(0,-1)
;-Entity
Global Taille=200
Global Angle.f
*Ptr.Vertex=AllocateMemory(SizeOf(Vertex)*24)
CopyMemory(?Vertices,*Ptr,SizeOf(Vertex)*24)
;Couleur dessus
*Mem.Vertex = *Ptr
For i = 0 To 3
*Mem\co=MaCouleur(0,0,255)
*Mem + SizeOf(Vertex)
Next i
;Couleur dessous
*Mem.Vertex = *Ptr + 4 * SizeOf(Vertex)
For i = 0 To 3
*Mem\co=MaCouleur(255,255,255)
*Mem + SizeOf(Vertex)
Next i
;Couleur devant
*Mem.Vertex = *Ptr + 8 * SizeOf(Vertex)
For i = 0 To 3
*Mem\co=MaCouleur(255,255,0)
*Mem + SizeOf(Vertex)
Next i
;Couleur derriere
*Mem.Vertex = *Ptr + 12 * SizeOf(Vertex)
For i = 0 To 3
*Mem\co=MaCouleur(255,128,0)
*Mem + SizeOf(Vertex)
Next i
;Couleur gauche
*Mem.Vertex = *Ptr + 16 * SizeOf(Vertex)
For i = 0 To 3
*Mem\co=MaCouleur(0,255,0)
*Mem + SizeOf(Vertex)
Next i
;Couleur droit
*Mem.Vertex = *Ptr + 20 * SizeOf(Vertex)
For i = 0 To 3
*Mem\co=MaCouleur(255,0,0)
*Mem + SizeOf(Vertex)
Next i
CreateMesh(0,10)
SetMeshData(0, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate , *Ptr,24)
SetMeshData(0,#PB_Mesh_Face,?Triangles,12)
;Entity
CreateEntity(0,MeshID(0),MaterialID(0))
ScaleEntity(0,Taille,Taille,Taille)
EntityLocate(0, 0 , 0 , 0)
;-Camera
CreateCamera(0,0,0,100,100)
CameraBackColor(0,RGB(0,0,255))
AmbientColor(RGB(200,200,200))
CameraLocate(0,EntityX(0) + 250 ,EntityY(0)+ 250,EntityZ(0))
MoveCamera(0,0,40,350)
CameraLookAt(0,EntityX(0),EntityY(0),EntityZ(0))
Repeat
ExamineKeyboard()
Angle + 0.5
RotateEntity(0,Angle,Angle,Angle)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
DataSection
Vertices:
;Dessus 0 à 3
Data.f -0.5,0.5,-0.5
Data.f 0,1,0
Data.l 0
Data.f 0,0
Data.f 0.5,0.5,-0.5
Data.f 0,1,0
Data.l 0
Data.f 0,1
Data.f 0.5,0.5,0.5
Data.f 0,1,0
Data.l 0
Data.f 1,1
Data.f -0.5,0.5,0.5
Data.f 0,1,0
Data.l 0
Data.f 1,0
;Dessous 4 à 7
Data.f -0.5,-0.5,0.5
Data.f 0,-1,0
Data.l 0
Data.f 0,0
Data.f 0.5,-0.5,0.5
Data.f 0,-1,0
Data.l 0
Data.f 0,1
Data.f 0.5,-0.5,-0.5
Data.f 0,-1,0
Data.l 0
Data.f 1,1
Data.f -0.5,-0.5,-0.5
Data.f 0,-1,0
Data.l 0
Data.f 1,0
;Devant 8 à 11
Data.f -0.5,0.5,0.5
Data.f 0,0,1
Data.l 0
Data.f 0,0
Data.f 0.5,0.5,0.5
Data.f 0,0,1
Data.l 0
Data.f 0,1
Data.f 0.5,-0.5,0.5
Data.f 0,0,1
Data.l 0
Data.f 1,1
Data.f -0.5,-0.5,0.5
Data.f 0,0,1
Data.l 0
Data.f 1,0
;Derrière 12 à 15
Data.f 0.5,0.5,-0.5
Data.f 0,0,-1
Data.l 0
Data.f 0,0
Data.f -0.5,0.5,-0.5
Data.f 0,0,-1
Data.l 0
Data.f 0,1
Data.f -0.5,-0.5,-0.5
Data.f 0,0,-1
Data.l 0
Data.f 1,1
Data.f 0.5,-0.5,-0.5
Data.f 0,0,-1
Data.l 0
Data.f 1,0
;Cote gauche 16 à 19
Data.f -0.5,0.5,-0.5
Data.f -1,0,0
Data.l 0
Data.f 0,0
Data.f -0.5,0.5,0.5
Data.f -1,0,0
Data.l 0
Data.f 0,1
Data.f -0.5,-0.5,0.5
Data.f -1,0,0
Data.l 0
Data.f 1,1
Data.f -0.5,-0.5,-0.5
Data.f -1,0,0
Data.l 0
Data.f 1,0
;Cote droit 20 à 23
Data.f 0.5,0.5,0.5
Data.f 1,0,0
Data.l 0
Data.f 0,0
Data.f 0.5,0.5,-0.5
Data.f 1,0,0
Data.l 0
Data.f 0,1
Data.f 0.5,-0.5,-0.5
Data.f 1,0,0
Data.l 0
Data.f 1,1
Data.f 0.5,-0.5,0.5
Data.f 1,0,0
Data.l 0
Data.f 1,0
Triangles:
;0 à 3
Data.w 2,1,0
Data.w 0,3,2
;4 à 7
Data.w 6,5,4
Data.w 4,7,6
;8 à 11
Data.w 10,9,8
Data.w 8,11,10
;12 à 15
Data.w 14,13,12
Data.w 12,15,14
;16 à 19
Data.w 18,17,16
Data.w 16,19,18
;20 à 23
Data.w 22,21,20
Data.w 20,23,22
EndDataSection