3D lines

BlitzMax Modules Forums/MiniB3D/3D lines

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

I found this code which works perfectly within B3D but converted to BMAX the lines aren't as nice anymore.

Any ideas why?
Import sidesign.minib3d


Function createline(x1:Float, y1:Float, z1:Float, x2:Float, y2:Float, z2:Float, mesh = 0) 
	
	If mesh = 0 Then 
		mesh=CreateMesh()
		EntityFX(MESH, 1 + 4 + 16) 
		surf = CreateSurface(MESH) 
		verts = 0
	
		AddVertex surf,x1#,y1#,z1#,0,0
	Else
		surf = GetSurface(mesh,1)
		verts = CountVertices(surf)-1
	End If
	
	'AddVertex surf, x1:Float, y1:Float, z1:Float, 0, 0 ' or maybe change this to something like: 
	AddVertex surf, x1:Float + 0.001, y1:Float + 0.001, z1:Float + 0.001, 0, 0
	AddVertex surf,x2#,y2#,z2#,1,0
	
	AddTriangle surf,verts,verts+2,verts+1
	


	Return mesh
End Function

' --- set graphics
Graphics3D 640, 480, 32, 2
'SetBuffer(BackBuffer())

' --- create scene setup
camPiv = CreatePivot()
camera = CreateCamera(camPiv)
PositionEntity(camera, 0,0,-10)

light=CreateLight(2) 
PositionEntity(light,4,10,0) 
LightRange(light,10)

' --- create test cube
cube=CreateCube()
ScaleMesh(cube, 2,1,1)
EntityAlpha(cube, 0.5)
cube2=CreateCube()
ScaleMesh(cube2, 1.8,0.8,0.8)

' --- create lines
lines = createLine(2,1,1,    1,2,1)
lines = createLine(1,2,1,    0,2.3,1, lines)
lines = createLine(0,2.3,1, -1,2,1, lines)
lines = createLine(-1,2,1,  -2,1,1, lines)
EntityColor(lines, 255,0,0)

' okay, this is a bit cheating and very wrong/memory leak prone and shouldn't be used this way (because freeEntity(lines) will only free the last line)
' but i wanted To make more than one Line
' and not bother with typing even more hide- and showentity or rewriting the createline function:)
'
' yes, i am lazy ;)

lines = createLine(2,1,-1,    1,2,-1)
lines = createLine(1,2,-1,    0,2.3,-1, lines)
lines = createLine(0,2.3,-1, -1,2,-1, lines)
lines = createLine(-1,2,-1,  -2,1,-1, lines)
EntityColor(lines, 255,0,0)

lines = createLine(-3,1,1,   3,1,1)
EntityColor(lines, 255,0,0)
lines = createLine(-5,1,-1,  4,1,-1)
EntityColor(lines, 255,0,0)
lines = createLine(-4,-1,1,  3,-1,1)
EntityColor(lines, 255,0,0)
lines = createLine(-3,-1,-1, 5,-1,-1)
EntityColor(lines, 255,0,0)

TurnEntity(campiv, 35,35,35)

While Not KeyDown(KEY_ESCAPE) 

	' --- camera controls
	'scrollwheel = MouseZSpeed()
	If MouseDown(1) Then 
		TurnEntity(camPiv, MouseYSpeed(),-MouseXSpeed(),0)
	Else If scrollwheel <> 0 Then 
		MoveEntity(camera, 0,0,scrollwheel*3)
	Else
		dummy = MouseYSpeed() 
		dummy = MouseXSpeed() 
		'dummy = MouseZSpeed() ' prevent mousepeed blips.
	End If

	' --- rendering
	CameraClsMode(CAMERA, 1, 1) 
	Wireframe(0) 
	HideEntity(lines) 
	ShowEntity(cube) 
	ShowEntity(cube2) 
	RenderWorld() 
	
	CameraClsMode(CAMERA, 0, 0) 
	Wireframe(1) 
	ShowEntity(lines)
	HideEntity(cube)
	HideEntity(cube2) 
	RenderWorld() 
	Flip()
Wend

End