For baking, I need alpha only images.

Generally, I think the image class should be as user friendly and flexible as possible. I don't think the optimization is worth complicating the interface. Keep in mind that images don't need to be decoded unless the user wants to manipulate them.


Bill, grumble wrote:
Jedediah Smith wrote:
I think it's come time for a proper class for decoded images. - anywhere else decoded images are used
        public byte[] Red;
        public byte[] Green;
        public byte[] Blue;
        public byte[] Bump;
        public byte[] Alpha;

I would think you would get less page cache misses if you use a structure since the code generally uses the Alpha channel with
the color channels.

I also don't see anywhere you would have just an Alpha and not a full RGB pixel. The packed structure takes one 32 bit word and therefore
would not use that much more ram even when the Alpha channel is not
used.

#pragma pack(push)
#pragma pack(1)        //pack the structure itself.
typedef struct tagRGBQUADA {
  BYTE    Red;         //LSB first on Intel processors.
  BYTE    Green;     //The order only matters if a union is used.
  BYTE    Blue;
BYTE Alpha; } RGBQUADA;
#pragma pack(pop)    //back to default packing

Namespace libsecondlife
{
    public class Image
    {
        public int Width;
        public int Height;

    public RGBQUADA[] Pixels;
        public byte[] Bump;
    public bool AlphaChannelUsed; //true if actually used.

    public Create(int width, int height, bool bRGB, bool bBump)
        int n = width * height;
        if (bRGB) Pixels = new RGBQUADA[n];
        if (bBump) Bump = new byte[n];
    }; //create
   }//Class image
}//Namespace libsecondlife
_______________________________________________
libsl-dev mailing list
libsl-dev@opensecondlife.org
http://opensecondlife.org/cgi-bin/mailman/listinfo/libsl-dev

Reply via email to