Le mode WireFrame ne fonctionne pas avec EntityRenderMode(0, 1)
ou du moins , dans le code qui suit , ça fonctionne partiellement , en se baladant sur la matrice , on peut voir une texture grise apparaitre.
Je viens juste de m'apercevoir que si je changeais la valeur 1000 ici CreateMesh(0,1000) :
- En diminuant la valeur , la texture n'apparait plus , mais c'est le mesh qui disparait .
- En augmentant la valeur , le mesh est bien présent, mais la texture grise apparait en permanence.
Autre phénomène étrange , si je commente ces lignes :
Code : Tout sélectionner
;LoadMesh (1, "Robot.mesh")
;LoadTexture(1, "r2skin.jpg")
;CreateEntity (1, MeshID(1), CreateMaterial(1, TextureID(1)))
;AnimateEntity(1, "Walk")
Code : Tout sélectionner
;{- 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
Add3DArchive("Data\", #PB_3DArchive_FileSystem)
#CameraSpeed = 10
Define.f KeyX, KeyY, MouseX, MouseY
Structure Vertex
px.f
py.f
pz.f
nx.f
ny.f
nz.f
U.f
V.f
EndStructure
Structure Facette
P1.Vertex
P2.vertex
P3.Vertex
P4.Vertex
EndStructure
Structure Face
f1.w
f2.w
f3.w
f4.w
f5.w
f6.w
EndStructure
Declare MakeMatrice()
;-Pourquoi ces constantes ne sont pas dans les résidents ? une raison particulière ?
#PB_Entity_Solid = 0
#PB_Entity_Wireframe = 1 << 0
#PB_Entity_Plot = 1 << 1
#PB_Entity_CastShadow = 1 << 2
WorldShadows(#PB_Shadow_Additive)
;-Mesh
MakeMatrice()
;-Texture
CreateTexture(0,64,64)
StartDrawing(TextureOutput(0))
Box(0,0,64,64,RGB(0,200,0))
StopDrawing()
;-Material
CreateMaterial(0, LoadTexture(0,"background.png"))
;-Entity
CreateEntity(0, MeshID(0), MaterialID(0))
EntityRenderMode(0, 1)
;-Light
AmbientColor(RGB(128,128,128))
CreateLight(0, RGB(255,255,255))
;-Camera
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0,0,200,500)
CameraLookAt(0,0,50,100)
;-Robot
LoadMesh (1, "Robot.mesh")
LoadTexture(1, "r2skin.jpg")
CreateEntity (1, MeshID(1), CreateMaterial(1, TextureID(1)))
AnimateEntity(1, "Walk")
Repeat
ClearScreen(0)
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
If ExamineMouse()
MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
EndIf
RotateCamera(0, MouseX, MouseY, RollZ)
MoveCamera (0, KeyX, 0, KeyY)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
End
Procedure MakeMatrice()
CreateMesh(0,1000)
NbFacetteX=50
NbFacetteZ=50
TailleFacetteX=40
TailleFacetteZ=40
*VBuffer=AllocateMemory(SizeOf(Facette) * NbFacetteX * NbFacetteZ )
*PtrV.Facette=*VBuffer
For b=0 To NbFacetteZ-1
For a=0 To NbFacetteX-1
;Point 1
;Position
*PtrV\P1\px=a * TailleFacetteX
*PtrV\P1\py=0
*PtrV\P1\pz=b * TailleFacetteZ
;Normale
*PtrV\P1\nx=0
*PtrV\P1\ny=1
*PtrV\P1\nz=0
;Coordonnées texture
*PtrV\P1\u =0
*PtrV\P1\v =0
;Point 2
;Position
*PtrV\P2\px=(a + 1) * TailleFacetteX
*PtrV\P2\py=0
*PtrV\P2\pz=b * TailleFacetteZ
;Normale
*PtrV\P2\nx=0
*PtrV\P2\ny=1
*PtrV\P2\nz=0
;Coordonnées texture
*PtrV\P2\u =1
*PtrV\P2\v =0
;Point 3
*PtrV\P3\px=(a + 1) * TailleFacetteX
*PtrV\P3\py=0
*PtrV\P3\pz=(b + 1) * TailleFacetteZ
*PtrV\P3\nx=0
*PtrV\P3\ny=1
*PtrV\P3\nz=0
*PtrV\P3\u =1
*PtrV\P3\v =1
;Point 4
*PtrV\P4\px=a * TailleFacetteX
*PtrV\P4\py=0
*PtrV\P4\pz=(b + 1) * TailleFacetteZ
*PtrV\P4\nx=0
*PtrV\P4\ny=1
*PtrV\P4\nz=0
*PtrV\P4\u =0
*PtrV\P4\v =1
*PtrV + SizeOf(Facette)
Next a
Next b
*IBuffer=AllocateMemory(SizeOf(Face) * NbFacetteX * NbFacetteZ * 2)
*PtrF.Face = *IBuffer
For b=0 To NbFacetteZ-1
For a=0 To NbFacetteX-1
P1=(a+(NbFacetteX*b))*4
P2=P1+1
P3=P2+1
P4=P3+1
;Face 1
*PtrF\f1=P4 : *PtrF\f2=P2 : *PtrF\f3=P1
*PtrF\f4=P2 : *PtrF\f5=P4 : *PtrF\f6=P3
*PtrF + SizeOf(Face)
Next
Next
SetMeshData(0, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, *VBuffer,NbFacetteX * NbFacetteZ * 4)
SetMeshData(0, #PB_Mesh_Face, *IBuffer, NbFacetteX * NbFacetteZ * 2)
EndProcedure