Mail Archives: djgpp/1999/09/09/13:02:58
Anders David Skarin writes:
> There is one small thing i can't get over though... blit will
> not (as the manual sas) convert between differnt colordepths.
[...]
> BITMAP *test = create_bitmap_ex(32,320,240);
You create a 256 color bitmap.
> destroy_bitmap(test);
Now you destroy it.
> set_color_depth(16);
> if(set_gfx_mode(GFX_VESA2L,320,240,0,0)!=0)printf("sorry\n");
Now you set a 16 bit video mode. btw. it would be better to use
GFX_AUTODETECT instead of GFX_VESA2L, because hardcoding the
driver selection is a great way to make sure that your programs
won't run on any other machines that have different hardware to
your own...
> putpixel(test,x,y,0x00FF5500);
Now you draw a pixel onto the test bitmap, which you previously
destroyed. Not a good idea! Also, it looks as if you are expecting
the color parameter to be in 24 bit RGB format, which is wrong
because a) test was a 256 color bitmap, not truecolor, and b)
you should never hardcode your bit patterns in any case, because
not all graphics cards use the same color encodings. Use the
makecol() function to construct a suitable color value at runtime.
> blit(test,screen,0,0,0,0,320,240);
This would work, if your test bitmap still existed, and if you
had draw sensible 256 color values onto it. But you really ought
to set a palette before you do this, because expanding a 256
color source onto a truecolor destination will have pretty much
random results unless you tell it what palette you want to use
first.
Shawn Hargreaves.
- Raw text -