Código:
Graphics3d 800,600,32,0.
Setbuffer backbuffer().
Global xscale#=1*(.8/3).
Global sombra = createtexture (256,256,16+32).
===============================
Ambientlight 64,64,64.
Global cámara = createcamera ().
Global terreno = createcube ().
Global sol = createlight().
Positionentity cámara, 0,6,-12.
Scaleentity terreno, 50,1,50.
Rotateentity sol, 90,0,0.
Global cubo = createcube ().
Positionentity cubo,0,4,0.
Entitycolor cubo,255,0,0.
==================================
Global s_cámara = createcamera ().
Cameraviewport s_camara,0,0,256,256.
Cameraprojmode s_camara,2.
Camerazom s_camara.3.
Positionentity s_camara,0,200,0.
Hideentity s_camara.
Entitytexture terreno,sombra.
Repeat tturnentity cubo,1.1,0 tpointentity s_camara,cubo tactualizar() trenderworld t tflip t.
Until keyhit(1).
End.
Function actualizar() tsetbuffer texturebuffer(sombra) tcolor 255,255,255 trect 0,0,texturewidth(sombra)+1,textureheight(sombra)+1 tsetbuffer backbuffer() tshowentity s_camara thideentity cámara tentitycolor cubo,64,64,64 tentityfx cubo,1+8 t trenderworld() tcopyrect 0,0,256,256,0,0,backbuffer(),texturebuffer(sombra) tentitycolor cubo,255,0,0 tentityfx cubo,0 t tfor s=1 todo countsurfaces(terreno) surf=getsurface (terreno, s) for v=0 todo countvértices(surf)-1 tformpoint vertexx(surf),vertexy(surf),vertexz(surf),terreno,s_camara vertextexcords surf, (tformedx()/xscale#)/32+0.5,1-((tformedy()/xscale#)/32+.5) next tnext t t t thideentity s_camara tshowentity cámara t t.
End function.