Here's a test file I created that should show what I mean. I can use AGK2's broadcast to run it on my Galaxy GS5 and it is able to display the shadows fine. It is only the Raspberry Pi that they do not work.
// Project: DroppingBallsPhysics
// Created: 2017-09-14
// Created by: Darin Murphy
// 3d environment where the player can drop randomly colored balls on to a platform
// show all errors
SetErrorMode(2)
// set window properties
SetWindowTitle( "DroppingBallsPhysics" )
SetWindowSize( 1024, 768, 0 )
SetWindowAllowResize( 1 ) // allow the user to resize the window
// set display properties
SetVirtualResolution( 1024, 768 ) // doesn't have to match the window
SetOrientationAllowed( 1, 1, 1, 1 ) // allow both portrait and landscape on mobile devices
SetSyncRate( 30, 0 ) // 30fps instead of 60 to save battery
SetScissor( 0,0,0,0 ) // use the maximum available screen space, no black borders
UseNewDefaultFonts( 1 ) // since version 2.0.22 we can use nicer default fonts
// create 3d universe
Create3DPhysicsWorld()
Set3DPhysicsGravity(0,-10.0,0)
SetSunActive(1)
SetSunColor(255,255,255)
SetSunDirection(500,-300,200)
SetShadowMappingMode(2)
// create platform
CreateObjectBox( 1,180,5,180 )
SetObjectCastShadow(1,1)
SetObjectReceiveShadow(1,1)
SetObjectPosition(1,0,-20,0)
Create3DPhysicsStaticBody( 1 )
SetObjectShapeBox(1)
SetObject3DPhysicsRestitution(1,0.85)
// Back Wall
CreateObjectBox(2,180,20,5)
SetObjectCastShadow(2,1)
SetObjectReceiveShadow(2,1)
SetObjectPosition(2,0,-10,90)
Create3DPhysicsStaticBody( 2 )
SetObjectShapeBox(2)
SetObject3DPhysicsRestitution(2,0.85)
// Left Wall
CreateObjectBox(3,5,20,180)
SetObjectCastShadow(3,1)
SetObjectReceiveShadow(3,1)
SetObjectPosition(3,-90,-10,0)
Create3DPhysicsStaticBody( 3 )
SetObjectShapeBox(3)
SetObject3DPhysicsRestitution(3,0.85)
// Right Wall
CreateObjectBox(4,5,20,180)
SetObjectCastShadow(4,1)
SetObjectReceiveShadow(4,1)
SetObjectPosition(4,90,-10,0)
Create3DPhysicsStaticBody( 4 )
SetObjectShapeBox(4)
SetObject3DPhysicsRestitution(4,0.85)
// front Wall
//CreateObjectBox(5,180,20,5)
//SetObjectCastShadow(5,1)
//SetObjectReceiveShadow(5,1)
//SetObjectPosition(5,0,-10,-90)
//Create3DPhysicsStaticBody( 5 )
//SetObjectShapeBox(5)
////SetObject3DPhysicsRestitution(5,0.85)
// look slightly downward at the platform
SetCameraPosition( 1, 0,30,-200 )
SetCameraLookAt( 1, 0,10,0, 0 )
// Used to create random balls
ball_id = 6
do
// create randomly colored ball, then drop it on to the platform every time the player click their mouse's left button
IF GetPointerPressed() = 1
ball_id = ball_id + 1
CreateObjectSphere(ball_id,10,64,64)
SetObjectColor(ball_id,Random2(0,255),Random2(0,255),Random2(0,255),0)
SetObjectCastShadow(ball_id,1)
SetObjectReceiveShadow(ball_id,1)
SetObjectPosition(ball_id,0,200,0)
Create3DPhysicsDynamicBody(ball_id)
SetObjectShapeSphere(ball_id)
SetObject3DPhysicsRestitution(ball_id,0.85)
ENDIF
// Print statistical data
PrintC( "FPS: " )
Print( ScreenFPS() )
PrintC( "Polygons: " )
Print( GetPolygonsDrawn() )
PrintC( "Shadow Map Supported: ")
Print( GetShadowMappingSupported() ) // this will be 0 if ran on a Raspberry Pi
Step3DPhysicsWorld()
Sync()
loop