CreateCube???

Blitz3D Forums/Blitz3D Programming/CreateCube???

Hi

is CreateCube doing something cleverer than creating a single mesh, single surface with 12 tris on it?

The reason I ask is if I create my own cube using...

m=CreateMesh()
;front face
b=LoadBrush(".\gfx\" + "wall.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3

;right face
AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3

;back face
AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3

;left face
AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3

;bottom face
AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3

;top face
AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1
AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
Return m

...and use copyentity to create a load of them, then I get a few FPS, however if I use createcube and then copyentity my FPS in more than double.

WHY IS THIS?

I'm not sure why it slows down the rendering, but your mesh construction isn't correct. Try this, and see if it still slows the fps down:
brush = LoadBrush(".\gfx" + "wall.jpg",49 )
cube = CreateMyCube(brush)

Function CreateMyCube(brush=0,parent=0)
	
	; Prepare the mesh
	mesh = CreateMesh(parent) 	
	surf = CreateSurface(mesh,brush) 

	;front face 
	v0 = AddVertex(surf,-1,+1,-1,0,0)
	v1 = AddVertex(surf,+1,+1,-1,1,0)
	v2 = AddVertex(surf,+1,-1,-1,1,1)
	v3 = AddVertex(surf,-1,-1,-1,0,1) 
	AddTriangle surf,v0,v1,v2
	AddTriangle surf,v0,v2,v3 

	;right face 
	v0 = AddVertex(surf,+1,+1,-1,0,0)
	v1 = AddVertex(surf,+1,+1,+1,1,0) 
	v2 = AddVertex(surf,+1,-1,+1,1,1)
	v3 = AddVertex(surf,+1,-1,-1,0,1)
	AddTriangle surf,v0,v1,v2
	AddTriangle surf,v0,v2,v3 

	;back face 
	v0 = AddVertex(surf,+1,+1,+1,0,0)
	v1 = AddVertex(surf,-1,+1,+1,1,0) 
	v2 = AddVertex(surf,-1,-1,+1,1,1)
	v3 = AddVertex(surf,+1,-1,+1,0,1) 
	AddTriangle surf,v0,v1,v2
	AddTriangle surf,v0,v2,v3 

	;left face 
	v0 = AddVertex(surf,-1,+1,+1,0,0)
	v1 = AddVertex(surf,-1,+1,-1,1,0) 
	v2 = AddVertex(surf,-1,-1,-1,1,1)
	v3 = AddVertex(surf,-1,-1,+1,0,1) 
	AddTriangle surf,v0,v1,v2
	AddTriangle surf,v0,v2,v3 

	;bottom face 
	v0 = AddVertex(surf,-1,+1,+1,0,1)
	v1 = AddVertex(surf,+1,+1,+1,0,0) 
	v2 = AddVertex(surf,+1,+1,-1,1,0)
	v3 = AddVertex(surf,-1,+1,-1,1,1) 
	AddTriangle surf,v0,v1,v2
	AddTriangle surf,v0,v2,v3 

	;top face 
	v0 = AddVertex(surf,-1,-1,-1,1,0)
	v1 = AddVertex(surf,+1,-1,-1,1,1) 
	v2 = AddVertex(surf,+1,-1,+1,0,1)
	v3 = AddVertex(surf,-1,-1,+1,0,0) 
	AddTriangle surf,v0,v1,v2
	AddTriangle surf,v0,v2,v3 
	
	Return mesh
	 
End Function