游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1970|回复: 1

SDL 与 allegro 哪个更快?

[复制链接]

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2004-6-2 10:46:00 | 显示全部楼层 |阅读模式
各位网友:

  我很做一个Linux console 小游戏,最初打算使用:SDL库,但发现它的图像的绘制速度很慢,
只有 20fps而 allegro 速度就很快,同样使用 rivafb 驱动,却有 50bps。

  同样的游戏库,我并不相信 SDL做不到 50bps,此外我的好多代码已经写完了,不想改到 allegro ,不知是否还有什么办法?

SDL 测试源代码

SDL_INIT(SDL_INIT_VIDEO);
SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);
...
SDL_Surface *pbmp = IMG_Load(argv[0]);  // 这是一个 640x480x16bit图片
...
SDL_Surface * pScreen = SDL_GetVideoSurface();
cout<<time(NULL)<<endl;
for(int i=0;i<times;++i) // times = 1000
{
  //如果只有此行将显示不同图像来
  SDL_BlitSurface(pbmp,NULL,pScreen,NULL);

  SDL_Flip(pScreen);
}
cout<<time(NULL)<<endl;

此时显示器工作于:37.5K/75hz
1086172036
1086172082
即 46s / 1000 即 21.7fps

ALLEGRO 测试源代码

allegro_init();
set_color_depth(16);
if(set_gfx_mode(GFX_FBCON,640,480,0,0)) {...}

PALETTE the_palette;
//同样是640x480x16bit 图像
BITMAP * the_image = load_bitmap(argv[1],the_palette);

set_palette(the_palette);

cout<<time(NULL)<<endl;
for(int i=0;i<1000;++i)
  blit(the_image,screen,0,0,0,0,the_image->w,the_image->h);
cout<<time(NULL)<<endl;

显示器工作于:31.5k/60hz
1086172468
1086172487
相当于 19s/1000frame 即 52.6fps

我也在怀疑 allegro 的 blit 是不是仅仅向另外的进行提交
刷新请求,不能代表真正刷新时间?

而 SDL 真正是待刷新结束后才返回程序?

此外,我使用的是 rivafb 驱动。
网友:梦佳

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2004-6-2 12:58:00 | 显示全部楼层

Re:SDL 与 allegro 哪个更快?

为什么没人回复?是不是大家都不用 sdl 与 allegro 呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-1 13:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表