CreateTexture Alpha

Blitz3D Forums/Blitz3D Beginners Area/CreateTexture Alpha

How come, no matter what I try, when I use CreateTexture it never has an alpha?

Here's an example..
Graphics3D 640,480,32,2
SetBuffer BackBuffer()

CreateLight()

Global Camera = CreateCamera()
	PositionEntity Camera,0,2,-6

Global TextureAlpha = CreateTexture(512,512,2)
	SetBuffer TextureBuffer(TextureAlpha)
		Color 0,0,0 ; just to make sure there is a black background
		Rect 0,0,512,512
		
		Color 255,255,255
		Rect 128,128,256,256
		
		Color 255,0,0
		For c = 0 To 22;<Thickness
			Rect c,c,512-(c*2),512-(c*2),0
		Next
	SetBuffer BackBuffer()
	
Global TextureMasked = CreateTexture(512,512,4)
	SetBuffer TextureBuffer(TextureMasked)
		Color 0,0,0 ; just to make sure there is a black background
		Rect 0,0,512,512
		
		Color 255,255,255
		Rect 128,128,256,256
		
		Color 255,0,0
		For c = 0 To 22;<Thickness
			Rect c,c,512-(c*2),512-(c*2),0
		Next
	SetBuffer BackBuffer()
	
Global Ground = CreatePlane()
	EntityColor Ground,128,64,0
	
Global Cube1 = CreateCube()
	PositionEntity Cube1,2,1,1
	EntityTexture Cube1,TextureAlpha
	
Global Cube2 = CreateCube()
	PositionEntity Cube2,-2,1,1
	EntityTexture Cube2,TextureMasked
	
Color 255,255,255
While Not KeyDown(1)
	
	TranslateEntity Camera,(KeyDown(205)-KeyDown(203))*.5,(KeyDown(200)-KeyDown(208))*.5,(KeyDown(30)-KeyDown(44))*.5
	
	UpdateWorld
	RenderWorld
	
		Text 0,0,"Arrow Keys to move up, down, left, right"
		Text 0,20,"A and Z to move forward and backward"
	
	Flip
	
Wend
End


Even adding in the Flag "1" doesn't help

You need to use writepixel/writepixelfast and write directly to the alpha channel. Merely colouring pixels black will not set the alpha (or the mask).

Kinda like this?

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

CreateLight()

Global Camera = CreateCamera()
	PositionEntity Camera,0,2,-6
	CameraRange Camera,.1,100
	
Global TextureAlpha = CreateTexture(512,512,1+2)
	SetBuffer TextureBuffer(TextureAlpha)
		For wx = 0 To 511
			For wy = 0 To 511
				WritePixel(wx,wy,0) ; not sure how to use the argb input, but any value seems to make it transparent for me (0-255)
			Next
		Next
		
		Color 255,255,255
		Rect 128,128,256,256
		
		Color 255,0,0
		For c = 0 To 22;<Thickness
			Rect c,c,512-(c*2),512-(c*2),0
		Next
	SetBuffer BackBuffer()
	
Global TextureMasked = CreateTexture(512,512,1+4)
	SetBuffer TextureBuffer(TextureMasked)
		For wx = 0 To 511
			For wy = 0 To 511
				WritePixel(wx,wy,0) ; not sure how to use the argb input, but any value seems to make it transparent for me (0-255)
			Next
		Next
		
		Color 255,255,255
		Rect 128,128,256,256
		
		Color 255,0,0
		For c = 0 To 22;<Thickness
			Rect c,c,512-(c*2),512-(c*2),0
		Next
	SetBuffer BackBuffer()
	
Global Ground = CreatePlane()
	EntityColor Ground,128,64,0
	
Global Cube1 = CreateCube()
	PositionEntity Cube1,1.5,1.1,1
	EntityTexture Cube1,TextureAlpha
	EntityFX Cube1,16
	
Global Cube2 = CreateCube()
	PositionEntity Cube2,-1.5,1.1,1
	EntityTexture Cube2,TextureMasked
	EntityFX Cube2,16
	

While Not KeyDown(1)
	
	TranslateEntity Camera,(KeyDown(205)-KeyDown(203))*.1,(KeyDown(200)-KeyDown(208))*.1,(KeyDown(30)-KeyDown(44))*.1
	
	UpdateWorld
	RenderWorld
		
		Color 255,255,255
		Text 0,0,"Arrow Keys to move up, down, left, right"
		Text 0,20,"A and Z to move forward and backward"
		
		Color 0,255,255
		CameraProject Camera,EntityX(Cube1),EntityY(Cube1),EntityZ(Cube1)
		Text ProjectedX(),ProjectedY()-80,"Alpha texture",1,1
		
		CameraProject Camera,EntityX(Cube2),EntityY(Cube2),EntityZ(Cube2)
		Text ProjectedX(),ProjectedY()-80,"Masked texture",1,1
	Flip
	
Wend
End