CameraViewport

Blitz3D Forums/Blitz3D Programming/CameraViewport

This shows how you can compensate for any aspect ratio.
Graphics3D 640,480,0,2
SetBuffer BackBuffer()

clipx = 208
clipy = 48
clipw = 384
cliph = 384
origzoom# = 1.0
origclipw# = clipw

camera = CreateCamera()

For i = 0 To 10
	m = CreateCube()
	PositionEntity m,Rnd(-10,10),Rnd(-10,10),Rnd(10,50)
Next

For i = 0 To 10
	m = CreateSphere()
	PositionEntity m,Rnd(-10,10),Rnd(-10,10),Rnd(10,50)
Next


Repeat
	If MouseDown(1)
		If MouseX()-clipx>10 Then clipw = MouseX()-clipx
		If MouseY()-clipy>10 Then cliph = MouseY()-clipy
	EndIf
	If MouseDown(2)
		clipw = clipw+(clipx-MouseX())
		cliph = cliph+(clipy-MouseY())
		clipx = MouseX()
		clipy = MouseY()
	EndIf
		
	Cls
	
	; Compensate for viewport aspect!
	zoom# = origzoom#*(origclipw/clipw)

	Rect clipx-1,clipy-1,clipw+2,cliph+2,False
	CameraViewport camera,clipx,clipy,clipw,cliph
	CameraZoom camera,zoom
	
	RenderWorld
	
	Text GraphicsWidth()/2,0,"Left MB - Set Top Left ("+clipx+","+clipy+") | Right MB - Set Bottom Right ("+(clipx+clipw)+","+(clipy+cliph)+")",True,False
	Flip
	
Until KeyHit(1)