al_create_bitmap(3)

πŸ“¦
version 5.2.11.3 Β· 3 versions
, in arch rolling

πŸ’– NAME πŸ’–

al_create_bitmap β€” Allegro 5 API. Yep bestie, this is the Library Functions Manual page for al_create_bitmap(3), and it’s literally the β€œmake me a brand-new bitmap” era ✨.

🌈 SYNOPSIS 🌈

#include <allegro5/allegro.h>

ALLEGRO_BITMAP *al_create_bitmap(int w, int h)

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so al_create_bitmap() creates a new bitmap using the bitmap format and flags for the current thread. Lowkey important: blitting between bitmaps of differing formats, or blitting between memory bitmaps and display bitmaps, may be slow. Not a crime, just a vibe check πŸ’….

Unless you set the ALLEGRO_MEMORY_BITMAP flag, the bitmap is created for the current display. And blitting to another display may be slow.

If a display bitmap is created, there may be limitations on the allowed dimensions. For example, a DirectX or OpenGL backend usually has a maximum allowed texture size β€” so if bitmap creation fails for very large dimensions, you may want to re-try with a smaller bitmap. Some platforms also dictate a minimum texture size, which is relevant if you plan to use this bitmap with the primitives addon. If you try to create a bitmap smaller than this, this call will not fail, but the returned bitmap will be a section of a larger bitmap with the minimum size. The minimum size that will work on all platforms is 32 by 32. There is an experimental switch to turn this padding off by editing the system configuration (see min_bitmap_size key in al_get_system_config(3)).

Some platforms do not directly support display bitmaps whose dimensions are not powers of two. Allegro handles this by creating a larger bitmap that has dimensions that are powers of two and then returning a section of that bitmap with the dimensions you requested. This can be relevant if you plan to use this bitmap with the primitives addon but shouldn’t be an issue otherwise πŸ¦‹.

If you create a bitmap without ALLEGRO_MEMORY_BITMAP set but there is no current display, a temporary memory bitmap will be created instead. You can later convert all such bitmap to video bitmap and assign to a display by calling al_convert_memory_bitmaps(3).

On some platforms the contents of video bitmaps may be lost when your application loses focus. Allegro has an internal mechanism to restore the contents of these video bitmaps, but it is not foolproof (sometimes bitmap contents can get lost permanently) and has performance implications. If you are using a bitmap as an intermediate buffer this mechanism may be wasteful. In this case, if you do not want Allegro to manage the bitmap contents for you, you can disable this mechanism by creating the bitmap with the ALLEGRO_NO_PRESERVE_TEXTURE flag. The bitmap contents are lost when you get the ALLEGRO_EVENT_DISPLAY_LOST and ALLEGRO_EVENT_DISPLAY_HALT_DRAWING and they should be restored when you get the ALLEGRO_EVENT_DISPLAY_FOUND and when you call al_acknowledge_drawing_resume(3) (after ALLEGRO_EVENT_DISPLAY_RESUME_DRAWING event). You can use those events to implement your own bitmap content restoration mechanism if Allegro’s does not work well enough for you (for example, you can reload them all from disk).

Note: The contents of a newly created bitmap are undefined β€” you need to clear the bitmap or make sure all pixels get overwritten before drawing it. No cap, undefined means undefined, bestie πŸ’€.

When you are done with using the bitmap you must call al_destroy_bitmap(3) on it to free any resources allocated for it. This is not optional, it’s the cleanup era 🫢.

πŸŽ€ SEE ALSO πŸŽ€


Okay that’s the whole page, bestie β€” footer/source vibes: Allegro reference manual, al_create_bitmap(3). No date is printed on this one, so I’m not inventing a timestamp, periodt πŸ’…πŸ«Ά

πŸ“¦ where this page comes from
  • arch rolling: allegro 5.2.11.3-2 Β· Zlib AND BSD-3-Clause AND OFL-1.1 AND LicenseRef-Custom
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms