Texture part tiling

Blitz3D Forums/Blitz3D Programming/Texture part tiling

Is this what you mean? I'm not entirely sure. I've still to implement the texture remaining still though.

Graphics3D 800,600
SetBuffer BackBuffer()

Dim vertex_scale#(3,2) ; 4 vertices (0,1,2,3) and 3 axis (0 = x, 1 = y, 2 = z)

Global camera = CreateCamera()
PositionEntity camera,0,0,-10

Global light = CreateLight()

Global mesh = CreateMesh()
Global surf = CreateSurface(mesh)

v0 = AddVertex ( surf,-1,-1,0,0,0)
v1 = AddVertex ( surf, 1,-1,0,1,0)
v2 = AddVertex ( surf,-1, 1,0,0,1)
v3 = AddVertex ( surf, 1, 1,0,1,1)

AddTriangle surf,v0,v2,v1
AddTriangle surf,v1,v2,v3


Global texture = CreateTexture(64,64)
SetBuffer TextureBuffer(texture)
Color 255,255,255
Oval 0,0,63,63
Rect 0,0,63,63,0

SetBuffer BackBuffer()

EntityTexture mesh,texture


Global scale# = 1

While Not KeyHit(1)

	If KeyDown(200) Then
		scale = 1.01
		scale_quad(scale)
	ElseIf KeyDown(208) Then
		scale = 0.99
		scale_quad(scale)
	End If


	UpdateWorld
	RenderWorld
	Flip
Wend
End


Function scale_quad(scale#,index=0)

	vertex_scale(0,0) = VertexX(surf,index)
	vertex_scale(0,1) = VertexY(surf,index)
	vertex_scale(0,2) = VertexZ(surf,index)
	
	vertex_scale(1,0) = VertexX(surf,index+1)
	vertex_scale(1,1) = VertexY(surf,index+1)
	vertex_scale(1,2) = VertexZ(surf,index+1)

	vertex_scale(2,0) = VertexX(surf,index+2)
	vertex_scale(2,1) = VertexY(surf,index+2)
	vertex_scale(2,2) = VertexZ(surf,index+2)

	vertex_scale(3,0) = VertexX(surf,index+3)
	vertex_scale(3,1) = VertexY(surf,index+3)
	vertex_scale(3,2) = VertexZ(surf,index+3)


	centre_x# = (vertex_scale(0,0) + vertex_scale(1,0) + vertex_scale(2,0) + vertex_scale(3,0))/4
	centre_y# = (vertex_scale(0,1) + vertex_scale(1,1) + vertex_scale(2,1) + vertex_scale(3,1))/4
	centre_z# = (vertex_scale(0,2) + vertex_scale(1,2) + vertex_scale(2,2) + vertex_scale(3,2))/4



	For loop = 0 To 3 ; loop through the 4 points
	
		;get the distance from the vertex to it's centre point
		temp_x_dist# = vertex_scale(index+loop,0) - centre_x
		temp_y_dist# = vertex_scale(index+loop,1) - centre_y
		temp_z_dist# = vertex_scale(index+loop,2) - centre_z

		;Scale the vertex
		temp_x_dist = temp_x_dist * scale
		temp_y_dist = temp_y_dist * scale
		temp_z_dist = temp_z_dist * scale

		tx# = centre_x + temp_x_dist
		ty# = centre_y + temp_y_dist
		tz# = centre_z + temp_z_dist

		VertexCoords surf,index+loop,tx,ty,tz
		
		;fix UV's
		u_temp# = VertexU(surf,index+loop) * scale
		v_temp# = VertexV(surf,index+loop) * scale		
;		Stop
		VertexTexCoords surf,index+loop,u_temp,v_temp

	Next
	
End Function