gpt4 book ai didi

C++ Allegro 绘图 Sprite (即使没有任何循环)使图形变慢

转载 作者:行者123 更新时间:2023-11-28 00:44:52 24 4
gpt4 key购买 nike

我正在使用 Allegro 和 C++ 开发 2D 平台游戏。但是,有一个问题。在游戏中,角色有橡皮子弹,当子弹发射时,它会永远从墙上反射出来。该角色有能力发射 30 发子弹,但是,子弹数越多,图形变得越慢。虽然我没有使用任何循环来绘制任何子弹的运动,但游戏不可避免地会变慢。这是移动子弹的函数:

void Character :: moveBullets(void){
if(bullet_turn != bullet_count){
bullet_chain[bullet_turn++]->move();
else
bullet_turn = 0;}

这里是函数 move():

rectfill(buffer, getX(), getY(), getX() + bullet_image[direction]->h, getY() + bullet_image[direction]->w, 0);

//update direction

acquire_screen();
draw_sprite(buffer, bullet_image[direction], x, y);
blit(buffer, screen, 0, 0, 0, 0, buffer->w, buffer->h);
release_screen();

我该怎么办?画很多 Sprite 时,Allegro 总是慢下来吗?

最佳答案

如果我对您的代码的理解正确,那么您正在将整个屏幕从缓冲区复制到每个项目符号的屏幕。这真的是您想要的吗?

此外,您确定应该使用 acquire_screen() 吗? acquire_bitmap 的文档

https://www.allegro.cc/manual/4/api/bitmap-objects/acquire_bitmap

说它在某些情况下会导致速度变慢。

关于C++ Allegro 绘图 Sprite (即使没有任何循环)使图形变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com