Je vous donne un exemple de code réduit au minimum.
Code : Tout sélectionner
Enumeration
#Mainform
EndEnumeration
Structure Sphere
identity.i
idtext3d.i
EndStructure
Global NewMap Entity.Sphere(), Event
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered
Global WWIdth, WHeight
Global Mesh
InitEngine3D()
InitKeyboard()
InitSprite()
Add3DArchive(#PB_Compiler_Home + "Examples\3D\Data\fonts", #PB_3DArchive_FileSystem)
Parse3DScripts()
OpenWindow(#Mainform,0,0, 0, 0, "", #PB_Window_SystemMenu | #PB_Window_Maximize)
WWidth = WindowWidth(#Mainform, #PB_Window_InnerCoordinate)
WHeight = WindowHeight(#Mainform, #PB_Window_InnerCoordinate)
OpenWindowedScreen(WindowID(#Mainform),0,0,WWIdth,WHeight,0, 0, 0)
CreateLight(#PB_Any,RGB(151, 251, 151), -1.8, 10, 5)
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(145, 182, 201))
MoveCamera(Camera, 2, 5, 15, #PB_Absolute)
CameraLookAt(Camera, 0,0,0)
Mesh=CreateSphere(#PB_Any, 0.1)
;L'erreur se produit dans cette boucle
For n = 0 To 5
AddMapElement(Entity(), Str(n))
Entity()\identity = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None, n, 0, 0)
Entity()\idtext3d = CreateText3D(#PB_Any, Str(n), "BlueHighway-16", 1.0, RGBA(255, 0, 0, 255))
AttachEntityObject(Entity()\identity, "", Text3DID(Entity()\idtext3d))
Next
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
If ExamineKeyboard()
If KeyboardPushed (#PB_Key_Escape)
Break
EndIf
EndIf
ClearScreen(RGB(0, 0, 0))
RenderWorld(80)
FlipBuffers()
ForEver
Si j'utilise la variable incrémentielle de la boucle comme identiant du texte3D : ça fonctionne mais ce n'est pas académique.
Je remplace
Code : Tout sélectionner
For n = 0 To 5
AddMapElement(Entity(), Str(n))
Entity()\identity = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None, n, 0, 0)
Entity()\idtext3d = CreateText3D(#PB_Any, Str(n), "BlueHighway-16", 1.0, RGBA(255, 0, 0, 255))
AttachEntityObject(Entity()\identity, "", Text3DID(Entity()\idtext3d))
Next
Code : Tout sélectionner
For n = 0 To 5
AddMapElement(Entity(), Str(n))
Entity()\identity = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None, n, 0, 0)
CreateText3D(n, Str(n), "BlueHighway-16", 1.0, RGBA(255, 0, 0, 255))
AttachEntityObject(Entity()\identity, "", Text3DID(n))
Next
Un autre bug mineur : Contrairement à ce que dit l'aide, on est obligé d'utiliser la codification RGBA().