97 lines
2.1 KiB
BlitzBasic
97 lines
2.1 KiB
BlitzBasic
Graphics3D 640,480
|
|
|
|
SetBuffer BackBuffer()
|
|
|
|
SeedRnd MilliSecs()
|
|
|
|
|
|
; create camera
|
|
camera=CreateCamera()
|
|
CameraClsColor camera,160,160,160
|
|
PositionEntity camera,0,0,-30
|
|
middle=CreatePivot()
|
|
EntityParent camera,middle
|
|
|
|
; create add texture - white cirlce on a black background
|
|
For n=0 To 50
|
|
Color 5+(n*5),5+(n*5),5+(n*5)
|
|
Oval 10+n,10+n,236-(n*2),236-(n*2),1
|
|
Next
|
|
|
|
blob_tex=CreateTexture(256,256)
|
|
blob=CreateImage(256,256)
|
|
GrabImage blob,0,0
|
|
CopyRect 0,0,256,256,0,0,ImageBuffer(blob),TextureBuffer(blob_tex)
|
|
FreeImage blob
|
|
|
|
max_blobs=100
|
|
|
|
; create blobs using add blend mode
|
|
Dim blobs(max_blobs) ; blob sprites
|
|
Dim xyblobs#(max_blobs,2) ; blob vector
|
|
|
|
For n=0 To max_blobs
|
|
blobs(n)=CreateSprite()
|
|
EntityFX blobs(n),1
|
|
EntityBlend blobs(n),3 ;set blend mode to add
|
|
EntityTexture blobs(n),blob_tex
|
|
xyblobs(n,0)=Rnd(-.1,.1)
|
|
xyblobs(n,1)=Rnd(-.1,.1)
|
|
xyblobs(n,2)=Rnd(-.1,.1)
|
|
EntityColor blobs(n),Rand(0,255),Rand(0,255),Rand(0,255) ;give it a colour
|
|
Next
|
|
|
|
; create cube texture
|
|
Color 255,255,255
|
|
Rect 0,0,256,256,1
|
|
For n=0 To 7
|
|
If n=0 Then Color 0,0,0
|
|
If n=1 Then Color 0,0,255
|
|
If n=2 Then Color 0,255,0
|
|
If n=3 Then Color 0,255,255
|
|
If n=4 Then Color 255,0,0
|
|
If n=5 Then Color 255,0,255
|
|
If n=6 Then Color 255,255,0
|
|
If n=7 Then Color 255,255,255
|
|
Rect n*32,n*32,32,32,1
|
|
Next
|
|
Color 0,0,0
|
|
For n=0 To 255 Step 32
|
|
Line 0,n,255,n
|
|
Line n,0,n,255
|
|
Next
|
|
|
|
cube_tex=CreateTexture(256,256)
|
|
cube=CreateImage(256,256)
|
|
GrabImage cube,0,0
|
|
CopyRect 0,0,256,256,0,0,ImageBuffer(cube),TextureBuffer(cube_tex)
|
|
FreeImage cube
|
|
|
|
; create cube
|
|
cube=CreateCube()
|
|
ScaleEntity cube,11,11,11
|
|
EntityTexture cube,cube_tex
|
|
EntityFX cube,17 ;set fullbright and 2 sided textures
|
|
EntityBlend cube,2 ;set multiply blend
|
|
|
|
Repeat
|
|
|
|
; move the blobs around
|
|
For n=0 To max_blobs
|
|
MoveEntity blobs(n),xyblobs(n,0),xyblobs(n,1),xyblobs(n,2)
|
|
;bounce off sides
|
|
If EntityX(blobs(n))<-10 Or EntityX(blobs(n))>10 Then xyblobs(n,0)=-xyblobs(n,0)
|
|
If EntityY(blobs(n))<-10 Or EntityY(blobs(n))>10 Then xyblobs(n,1)=-xyblobs(n,1)
|
|
If EntityZ(blobs(n))<-10 Or EntityZ(blobs(n))>10 Then xyblobs(n,2)=-xyblobs(n,2)
|
|
Next
|
|
|
|
; turn camera
|
|
TurnEntity middle,.1,.2,.3
|
|
|
|
|
|
UpdateWorld
|
|
RenderWorld
|
|
Flip
|
|
|
|
|
|
Until KeyHit(1) |