QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1588|回复: 14

控制台下运行SDL程序,运行结束后死机?

[复制链接]
发表于 2005-8-8 16:29:55 | 显示全部楼层 |阅读模式
从 www.libsdl.org上抄的一段例子,在X window下运行可以正常退出,但在控制台下运行,程序执行完毕后就死机,怎么会这样?

系统是:Fedora Core 4

[code:1]
#include <SDL.h>

void DrawPixel(SDL_Surface *Surface, int x, int y,Uint8 R, Uint8 G,Uint8 B)
{
    Uint32 color = SDL_MapRGB(Surface->format, R, G, B);
    Uint8 *  bufp= (Uint8 *)Surface->pixels + y*Surface->pitch + x*Surface->format->BytesPerPixel;
    switch (Surface->format->BytesPerPixel) {
        case 4:
            bufp[3] = color >> 24;
        case 3:
            bufp[2] = color >> 16;
        case 2:
            bufp[1] = color >> 8;
        case 1:
            bufp[0] = color;
    }
    return;
}

int main(){
    SDL_Surface *display;
    Uint32 x,y,i;
    SDL_Init(SDL_INIT_VIDEO);
    display=SDL_SetVideoMode( 320, 320, 32, SDL_HWSURFACE );

    for(i=0;i!=255;i++){
        if(SDL_MUSTLOCK(display))
            SDL_LockSurface(display);

        for(y=0;y<(display->h);y++){
            for(x=0;x<(display->w);x++){
                DrawPixel(display, x, y,  x+i, y+i, i);
            }
        }

        if ( SDL_MUSTLOCK(display) )
            SDL_UnlockSurface(display);

        SDL_UpdateRect(display, 0, 0,  display->w,  display->h);
    }
    SDL_UpdateRect(display, 0, 0,  display->w,  display->h);
    SDL_Delay(3000);
    return 0;
}

[/code:1]
发表于 2005-8-8 17:05:49 | 显示全部楼层
晕,在控制台下怎样运行
回复

使用道具 举报

 楼主| 发表于 2005-8-8 17:15:25 | 显示全部楼层
能啊,而且显示内容正确
回复

使用道具 举报

 楼主| 发表于 2005-8-8 17:17:23 | 显示全部楼层
framebuffer模式
回复

使用道具 举报

 楼主| 发表于 2005-8-9 17:36:50 | 显示全部楼层
我顶
回复

使用道具 举报

发表于 2005-8-11 11:13:40 | 显示全部楼层
SDL问题?硬件问题?人品问题?

不要做任何操作,就是初始化屏幕,然后关了,试试会不会死机!楼主在学SDL?打算做游戏 吗?
回复

使用道具 举报

 楼主| 发表于 2005-8-11 12:19:56 | 显示全部楼层
主要是想用C++写点东西,目的是学C++,想来想去还是写个游戏比较有意思。
回复

使用道具 举报

 楼主| 发表于 2005-8-11 12:39:08 | 显示全部楼层
哈,搞定,在程序退出前执行一下SDL_Quit()就行了。
回复

使用道具 举报

发表于 2005-8-11 13:43:12 | 显示全部楼层
SDL感觉如何,速度怎么样!
回复

使用道具 举报

发表于 2005-8-11 14:12:36 | 显示全部楼层
[quote:33119f9b55="Kan"]SDL感觉如何,速度怎么样![/quote]

这些东西最终要看硬件驱动。
回复

使用道具 举报

发表于 2005-8-11 14:25:19 | 显示全部楼层
只是相比之下,也只有同硬件相比才能得出什么系统比什么好!
回复

使用道具 举报

 楼主| 发表于 2005-8-11 15:03:58 | 显示全部楼层
速度。。。不知道怎么比较
回复

使用道具 举报

发表于 2005-8-11 16:02:49 | 显示全部楼层
[quote:ff53a372d9="Kan"] 只是相比之下,也只有同硬件相比才能得出什么系统比什么好![/quote]
撇开硬件sdl这样的东西肯定是最快的。
回复

使用道具 举报

发表于 2005-8-11 16:05:26 | 显示全部楼层
不是很清楚,感觉SDL有点像在DRIECT X(WINDOWS)或FB(LINUX)上的一个封装!应该不可能直接操作硬件的!
回复

使用道具 举报

发表于 2005-8-11 17:02:32 | 显示全部楼层
[quote:69eb035c96="Kan"]不是很清楚,感觉SDL有点像在DRIECT X(WINDOWS)或FB(LINUX)上的一个封装!应该不可能直接操作硬件的![/quote]

这些Direct的意思是说对硬件的绘图指令是执行在app的进程空间还是发
给另一个进程空间去执行。

所以DX是直接的,sdl如果是个上面的封装,那也是直接的。因为都是在
一个进程空间中传递,所以损耗是很小的,如果是发给另一个进程空间去
执行,那损耗就大了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 13:27 , Processed in 0.043984 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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