Ich nutze in einem Programm Billboards, diese möchte ich natürlich auch wieder Entfernen können.
Aber irgendwie funktioniert das bei mir nicht.
Das Problem ist eigentlich ganz einfach anhand eines leicht abgenderten "BillboardGrass.pb" Examples zu zeigen:
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - Billboard
;
; (c) 2011 - Fantaisie Software
;
; ------------------------------------------------------------
;
#CameraSpeed = 2
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Scripts", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Packs/skybox.zip", #PB_3DArchive_Zip)
Parse3DScripts()
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
; First create materials
;
CreateMaterial(0, LoadTexture(0,"grass1.png"))
MaterialBlendingMode(0, #PB_Material_AlphaBlend)
CreateMaterial(1, LoadTexture(1,"Dirt.jpg"))
; Then create the billboard group and use the previous material
;
;-Billboard
CreateBillboardGroup(0, MaterialID(0), 96, 96)
For i = 0 To 600
b = AddBillboard(#PB_Any, 0, Random(2000)-1000, Random(18) + 30, Random(2000) - 1000)
RemoveBillboard(b,0)
Next i
; create ground
CreatePlane(0, 2000, 2000, 40, 40, 4, 4)
CreateEntity(0, MeshID(0), MaterialID(1))
; Add house
LoadMesh(1, "tudorhouse.mesh")
CreateEntity(1, MeshID(1), #PB_Material_None, 0, 280, 0)
ScaleEntity(1, 0.5, 0.5, 0.5)
; SkyBox
SkyBox("stevecube.jpg")
; create camera
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 200, 400, 900, #PB_Absolute)
CameraLookAt(0, 0, 100, 0)
Repeat
Screen3DEvents()
If ExamineMouse()
MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
EndIf
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
RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (0, KeyX, 0, KeyY)
RenderWorld()
Screen3DStats()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End
Microsoft Visual C++ Runtime Library
Assertion Failed!
Expression: index <mactivebillboards.size() && "Billboard Index out of Bounds"
Wie mache ich das nun Richtig? Hat da jemand eine Idee?