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