[英]How to show the draw of subbitmap in screen in Allegro?
I using two bitmaps, image (subbitmap) and grid (main bitmap)我使用两个位图,图像(子位图)和网格(主位图)
ALLEGRO_BITMAP* grid = NULL;
ALLEGRO_BITMAP* image = NULL;
ALLEGRO_DISPLAY* display = NULL;
//Initialization
display = al_create_display(SCREEN_W, SCREEN_H + INFO_H);
grid = al_create_bitmap(SCREEN_W, SCREEN_H + INFO_H);
al_set_target_bitmap(grid);
al_set_target_bitmap(al_get_backbuffer(display));
al_draw_bitmap(grid, 0, 0, 0);
//Creating a model
image = loadBitmapAtSize(...);
al_create_sub_bitmap(grid, 0, 0, columns, rows);
al_draw_bitmap(image, 0, 0, 0);
Until here it is all going well, but If I draw directly to image(subbitmapt) then I not found how to send the changes to display.直到这里一切顺利,但如果我直接绘制到图像(子位图),那么我找不到如何发送更改以显示。
al_set_target_bitmap(image);
//rows and cols are the height and width of subbitmap
for (int y = 0; y < rows; ++y) {
for (int x = 0; x < columns; ++x) {
if(x == y || x-1 == y || x+1 == y || x == y-1 || x == y+1){
//I test the condition and the program is entering to the if
al_draw_pixel(x, y, al_map_rgb(255, 255, 255));
}
}
}
al_set_target_bitmap(grid);
al_flip_display();
Any idea how can I update the main bitmap after edit the subbitmap?知道如何在编辑子位图后更新主位图吗?
From Allegro documentation:从 Allegro 文档:
A sub-bitmap is a bitmap that shares drawing memory with a pre-existing (parent) bitmap, but possibly with a different size and clipping settings.
子位图是与预先存在的(父)位图共享绘图内存的位图,但可能具有不同的大小和剪辑设置。
https://www.allegro.cc/manual/5/al_create_sub_bitmap https://www.allegro.cc/manual/5/al_create_sub_bitmap
al_create_sub_bitmap
returns a pointer to ALLEGRO_BITMAP
that you need to assign to a variable to use. al_create_sub_bitmap
返回一个指向ALLEGRO_BITMAP
,你需要分配给一个变量来使用。
To create and assign your subbitmap, you can use:要创建和分配您的子位图,您可以使用:
ALLEGRO_BITMAP* subbitmap = al_create_sub_bitmap(grid, 0, 0, columns, rows);
al_set_target_bitmap(subbitmap);
You have to draw your 'grid' bitmap onto the display, and then flip it.您必须将“网格”位图绘制到显示器上,然后翻转它。
al_set_target_backbuffer(display);
al_draw_bitmap(grid , 0 , 0 , 0);
al_flip_display();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.