can a bmp image format handle transparency

mr5 picture mr5 · Jan 7, 2013 · Viewed 26.3k times · Source

I am making this C++ program that has buttons, button containers, chat boxes, etc., and I want to wrap it around by textures.

I want to generate a smooth edge for all the rectangles I made, and I don't want vertex plotting method to do the work for it, since it consumes more CPU usage and not that looks pretty good, and I don't know if it can work with texture coordinates(i.e. glTexCoord(u, v) with glVertex2f(x, y) w/c should only be 4 since it is a quad)

I use to load textures using SDL_LoadBMP() w/c can load only a format of .bmp.(I'm not that sure because it says only LoadBMP there).

So my questions are:

  • can a .bmp format handle transparency? if so, how to do it?

  • can you show me some code samples using SOIL to load image of format .gif or any other formats that can handle image transparency?

  • can a quad handle an irregular/polygons shape like hexagon or star without drawing its background?

additional question

*how to import a primitive textbox that renders through c++ opengl so I can copy the texts there into clipboard? as for chatting session in my program.


I made my own library that draws the text using GL_POINTS and doesn't look good when resizing the window because the points were spread-out. It takes const char* for the text to avoid #include <*string*> because I want my program to be not dependent on core functions of C++.

So the better solution is to draw it using bitmaps.

Some suggest to draw it using images so I really need the transparency thing because I want it to draw using quad only.

Answer

Joshua Granick picture Joshua Granick · Apr 12, 2015

Yes, the bitmap format does support transparency.

It depends on the compression method, the default RGB method supports 24-bit color, but BITFIELDS compression supports 32-bit color (24-bit + alpha channel).

You can read more at http://en.wikipedia.org/wiki/BMP_file_format

I am using it successfully in the Lime project, here is an implementation written in Haxe: https://github.com/openfl/lime/blob/4adb7d638d15612e2542ae3a0ef581a786d21183/src/lime/_internal/format/BMP.hx