CreateTexture mask
Blitz3D Forums/Blitz3D Programming/CreateTexture mask| 
 | ||
| I have created a texture with CreateTexture(256,256,4) and draw dots on it then apply to a mesh.  The masking doesn't seem to work, i.e I can see the black background. Any thoughts? | 
| 
 | ||
| are you clearing the texture 0,0,0? Example: tex=CreateTexture(256,256,4) setbuffer texturebuffer(tex) clscolor 0,0,0 cls ; ***edit*** ...put dot routine here setbuffer backbuffer() | 
| 
 | ||
| Yeah... ClsColor 0,0,0 Cls | 
| 
 | ||
| LOL...reply while I was editing. Other than that, the only thing that I can think of is a palette issue. | 
| 
 | ||
| Actually, isn't masking done in 32 bit? Is your display and program set to 32 bit? | 
| 
 | ||
| I have ever try anything to do the mask work correctly with createxture, but ... never arrived. The only solution i have found is : 
Size=256
Tex=CreateTexture(Size,Size)
CurBuffer = Graphicsbuffer()
setbuffer texturebuffer(tex)
[...]
setbuffer CurBuffer
saveBuffer (texturebuffer,"TempTexture.bmp")
freetexture tex
tex=loadtexture("TempTexture.bmp",5)
deletefile ("TempTexture.bmp")
 | 
| 
 | ||
| I got it to work with loading a texture too...the closest I could get it to work with creating a masked texture was to clscolor 255,255,255 | 
| 
 | ||
| Methinks this is a bug! | 
| 
 | ||
| Yeah, I've been experimenting with the masking and can't seem to get it to work properly. | 
| 
 | ||
| This has been an issue in BB3D for as long as I can remember. IIRC, if you draw dots onto your texture, save it, then reload it, it *should* work. I realise this probably doesn't solve your problem, though. | 
| 
 | ||
| Gfk, well it does but hardly an elegant solution. Shouldn't BRL fix this? | 
| 
 | ||
| Yep, this issue has been around forever. You can get around it by using this code before drawing to the texture: 
tex = CreateTexture(256,256,5)	
LockBuffer TextureBuffer(tex)
For y = 0 To 255
  For x = 0 To 255
    WritePixelFast x,y,0,TextureBuffer(tex)
  Next
Next
UnlockBuffer TextureBuffer(tex)
 | 
| 
 | ||
| Or, you could do as GfK said, for example: | 
| 
 | ||
| if you are using drawing commands on a texture buffer, alpha channel information will be lost. It is however a good idea to touch up the alpha channel information manually to prevent black edges due to texture filtering: if a texel is black (assuming this should be transparent!) then -Read the rgb of all surrounding texels that are not transparent as well. -Calcualte the average RGB of them, then set the transparent center texel this way: alpha=0 argb= (average_rgb and $FFFFFF) or (alpha shl 24) endif this way the edges of the masked parts will fade to a color that makes more sense than black. EDIT: I just posted an example in the archives: http://www.blitzbasic.com/codearcs/codearcs.php?code=1806 |