; RenderDrawCalls Example ; ----------------------- ; Requires Extended mode. Graphics3D 640,480,0,2 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,6,-20 CameraClsColor camera,20,30,50 light=CreateLight() RotateEntity light,45,45,0 ground=CreatePlane() EntityColor ground,60,80,55 ; A spinning pickup that is always on screen pickup=CreateCylinder() ScaleEntity pickup,1,0.2,1 PositionEntity pickup,0,2,0 EntityColor pickup,255,220,60 ; 150 UNIQUE meshes - separate CreateCube calls cannot be auto-instanced, ; so each visible crate costs one extra draw call Dim crates(149) For n=0 To 149 crates(n)=CreateCube() ScaleEntity crates(n),0.5,0.5,0.5 PositionEntity crates(n),(n Mod 15)*2-14,0.5,(n/15)*2+4 EntityColor crates(n),100+(n Mod 8)*15,60,180 Next crates_on=True While Not KeyDown(1) ; Space hides or shows all 150 crates - watch the counter jump If KeyHit(57) crates_on=Not crates_on For n=0 To 149 If crates_on ShowEntity crates(n) Else HideEntity crates(n) EndIf Next EndIf TurnEntity pickup,0,2,0 ; Arrow keys move the camera If KeyDown(200) Then MoveEntity camera,0,0,0.1 If KeyDown(208) Then MoveEntity camera,0,0,-0.1 If KeyDown(203) Then TurnEntity camera,0,1,0 If KeyDown(205) Then TurnEntity camera,0,-1,0 RenderWorld ; Main-pass draw calls executed in the last completed frame Text 0,0,"Arrow keys: move camera Space: toggle 150 crates Esc: exit" Text 0,20,"RenderDrawCalls() = "+RenderDrawCalls() Flip Wend End