PDA

View Full Version : Using RAW RGBA texture files



Shields
12-13-2000, 10:50 AM
I've got a problem. I am using PhotoShop to add an Alpha channel to a bitmap and saving as RAW ( 0 size header, including alpha, interleaved.). This all works OK but when I load and texture stuff with it in Delphi, I just get a garbled image. I've checked the image dimensions, and they are OK.

Below is the relevant code I'm using.

PTexture = ^TgloveTexture ;
TTexture = record
width, height, bytes : integer ;
data : Pointer ;
end ;


function LoadTextureRaw ( filename : string ; w,h : integer ) : Cardinal ;
var
ptr : PTexture ;
tex : GLUint ;
fp : FILE of BYTE ;
resultInt : Integer ;
begin

tex := -1 ;

NEW ( ptr ) ;
if ( ptr <> nil ) then
begin

ptr ^. width := w ;
ptr ^. height := h ;
ptr ^. bytes := 4 ; // R,G,B & A componants
ptr ^. data := nil ;
GetMem ( ptr ^. data, ( w*h*4) ) ;

if ( ptr^.data <> nil ) then
begin

AssignFile ( fp, filename ) ;
Reset ( fp ) ;
BlockRead ( fp, ptr ^. data, ( w*h*4 ) , resultInt ) ;
CloseFile ( fp ) ;

glGenTextures(1, tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTE R,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTE R,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, ptr^.bytes, ptr ^. width, ptr^.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, ptr^.data );

end ;
end ;

LoadTextureRaw := tex ;

end ;


I then use the return texture variable (tex) to texture my polygons. BTW, the code for texturing the polys has not changed from when it works using a normal load of a bitmap (using the GLAUX routine).

Any ideas?

Thanks.