CreateCube???

Blitz3D Forums/Blitz3D Programming/CreateCube???

Boiled Sweets(Posted 2003) [#1]
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?


fredborg(Posted 2003) [#2]
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