Existen varias funciones para dibujar formas básicas, como bloques y paredes. Nota que estas formas también funcionan correctamente con backface culling.
d3d_draw_block(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat) Dibuja un bloque del color actual con las esquinas opuestas indicadas usando la textura indicada. Usa -1 para no usar una textura. hrepeat indica que tan seguido la textura debe ser repetida a través del borde horizontal de cada cara. vrepeat hace lo mismo con el borde vertical.
d3d_draw_cylinder(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,cerrado,steps) Dibuja un cilindro vertical usando el color actual en la caja de colisión indicada usando la textura indicada. Usa -1 para no usar una textura. hrepeat indica que tan seguido la textura debe ser repetida a través del borde horizontal de cada cara. vrepeat hace lo mismo con el borde vertical. closed indica si se debe cerrar la tapa y fondo del cilindro. steps indica cuantos pasos rotacionales deben ser tomados. Un valor típico es 24.
d3d_draw_wall(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat) Dibuja una pared vertical en el color actual con las puntas dadas usando la textura indicada. Usa -1 para no usar una textura. hrepeat indica que tan seguido la textura debe ser repetida a través del borde horizontal de cada cara. vrepeat hace lo mismo con el borde vertical.
d3d_draw_floor(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat) Dibuja un piso (inclinado) en el color actual con las esquinas dadas usando la textura indicada. hrepeat indica que tan seguido la textura debe ser repetida a través del borde horizontal de cada cara. vrepeat hace lo mismo con el borde vertical.
La siguiente pieza de código dibuja dos bloques:
{
var ttt;
ttt = background_get_texture(back);
d3d_draw_block(20,20,20,80,40,200,ttt,1,1);
d3d_draw_block(200,300,-10,240,340,100,ttt,1,1);
}