linux之x86裁剪移植---字符界面sdl开发入门

linux下有没有TurboC2.0那样的画点、线、圆的图形函数库,有没有grapihcs.h,或者与之相对应或相似的函数库是什么?有没有DirectX这样的游戏开发库?SDL就是其中之一。

    SDL(Simple DirectMedia Layer)是一个夸平台的多媒体游戏支持库,其中包含了对图形、声音、游戏杆、线程等的支持,目前可以运行在许多平台上,其中包括linux的 FrameBuffer控制台、svgalib、X Window环境,以及Windows DirectX、BeOS等。SDL是编写夸平台游戏和多媒体应用的优秀平台,与Windows的DirectX有的一比。主页:http: //www.libsdl.org。

    SDL库几乎已经成了目前流行的Linux的标配的多媒体库,系统安装时一般都已经默认安装了它们。利用SDL库开发应用程序,首先,要在程序中声明要使用的相应的头文件,比如:#include <SDL/SDL.h>,然后,在编译时指出要连接的SDL库即可,比如:gcc -lSDL test.c -o test。SDL库一般位于系统的标准头文件目录/usr/include里,编译器会在这个目录里找相应的头文件,如果要进一步省略“SDL/”,则必须在编译时指定头文件的具体位置,例如:gcc -I /usr/include/SDL -lSDL test.c -o test。也可以:gcc `sdl-config-libs-cflags` test.c -o test。“`”不是单引号,而是位于键盘左上方的反引号。

    要在linux控制台字符界面的环境下进行图形开发,还要打开framebuffer功能,方法是修改/boot/grub/grub.conf配置文件,在kernel...一行后面添加vga=0x317。如下:
title Fedora Core (2.6.15-1.2054_FC5)
    root (hd0,5)
    kernel /vmlinuz-2.6.15-1.2054_FC5 ro root=LABEL=/ rhgb quiet vga=0x0317
    initrd /initrd-2.6.15-1.2054_FC5.img

关于VGA值与显示器分辨率的关系如表:
    640X480        800X600        1024X768    1280X1024
8位色    0x301        0x303        0x305        0x307
16位色    0x311        0x314        0x317        0x31A
24位色    0x312        0x315        0x318        0x31B

初始化图形模式

要加载和初始化SDL库需要调用SDL_Init()函数,该函数以一个参数来传递要激活的子系统的标记,返回-1表示初始化失败。
下表列出来SDL的各个子系统:
标记        表示
SDL_INIT_VIDEO        视频子系统
SDL_INIT_AUDIO        音频子系统
SDL_INIT_CDROM        光驱子系统
SDL_INIT_TIMER        计时器子系统
SDL_INIT_JOYSTICK    游戏杆子系统
SDL_INIT_EVERYTHING    全部子系统

要同时激活多个子系统,可以把相应的标记按位或,如:SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO);

初始化SDL库之后,还需要设置一下视频模式,通过调用SDL_SetVideoMode()来完成:
SDL_Surface *screen;
screen=SDL_etVideoMode(640,480,16,SDL_SWSURFACE);/*640 X 480 X 16位色*/

SDL_Surface 定义在SDL_video.h中,它是一个绘图平面,所有的绘图操作都是在其上完成的。在退出图形模式时由SDL自动处理。不需要用时需显示的释放:SDL_FreeSurface(surface);

先来看一下一个完整的例子:
//ex_sdl.c
#include <stdlib.h>
#include <SDL.h>
int main()
{
    SDL_Surface *screen;
    Uint32 color;
    if ( SDL_Init( SDL_INIT_VIDEO) < 0 ) {
        fprintf(stderr, "无法初始化SDL: %s\n", SDL_GetError());
        exit(1);

    }

    SDL_ShowCursor(0);

    screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);  /*640 X 480 X 16位色*/
    if ( screen == NULL ) {
        fprintf(stderr, "无法设置640x480x16位色的视频模式:%s\n", SDL_GetError());
        exit(1);
    }
    atexit(SDL_Quit);
    color = SDL_MapRGB(screen->format,0,0,255);  /*蓝色*/
    SDL_FillRect(screen,&screen->clip_rect,color);  /*整个屏幕填充颜色*/
    SDL_UpdateRect(screen,0,0,0,0);              /*更新整个屏幕*/
    SDL_Delay(5000);                          /*延迟5秒钟*/
}

atexit(SDL_Quit);的作用是在程序退出时调用SDL_Quit()函数,这样就不必在每个要退出的地方都调用SDL_Quit()。

时间: 2024-08-02 04:48:27

linux之x86裁剪移植---字符界面sdl开发入门的相关文章

linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)

在虚拟机上yuv420可以正常显示 ,而945(D525)模块上却无法显示 ,后来验证了directdraw的yuv420也无法显示 ,由此怀疑显卡不支持 ,后把420转换为422显示. 420显示如下: /* 编译命令:arm-linux-gcc -o show2642 264showyuv2.c -I/usr/local/ffmpeg_arm/include/ -L/usr/local/ffmpeg_arm/lib/ -lswresample -lavformat -lavutil -lav

AIX下字符界面安装oracle 10g过程

1 . 安装数据库之前的准备工作.首先必须确认你的机器配置,操作系统,以及你需要安装的oracle数据库的版本.针对不同的机器.操作系统和oracle版本你可以参考以下网站.www.oracle.com (oracle数据库的官方网站,英文要加强哦^-^)在这个网站里面包含了你所需要的信息,不过在你Download的时候需要注册哦^-^2 . 针对通过Windows下登陆Linux OR Unix下安装的用户来说.(如果你是在Windows下安装oracle数据库,有图形界面提供给你,真是一个不

Linux下图形与字符界面切换的简单方法

  1. 图形界面切换到字符界面 在图像界面下按[Alt+Crtl+F1]~[ Alt+Crtl+F6]即可切换到字符界面 2. 字符界面切换到图形界面 (1)在界面下按[ Alt+Crtl+F7]即可切换到字符界面下 (2)在命令行输入以下命令: 代码如下: # startx 3. 设定默认启动界面 系统启动默认启动界面修改可以通过修改文件/etc/inittab,将字符界面设定为默认启动界面. 在命令行下输入以下命令,打开文件/etc/inittab, 代码如下: # vi /etc/ini

怎么从Linux字符界面切换到图形界面

  1.在字符界面输入startx或init 5 . 2.通过编辑/etc/inittab文件实现默认进入图形界面. 把其中的id:3:initdefault中的3改为5,这样以后系统启动后将直接进入文本模式. 以下是配置引导进入图形模式的etc/inittab文件的部分内容: #Default runlevel.The runlevels used by RHS are: # 0-halt(Do NOT set initdefault to this) # 1 -Single user mod

如何在图形界面和控制台(字符界面)之间来回切换?

如何在图形界面和控制台(字符界面)之间来回切换? 1 图形界面到控制台:Ctr+Alt+Fn(n=1,2,3,4,5,6): 2 各控制台之间切换:Alt+Fn(n=1,2,3,4,5,6): 3 控制台到图形:Alt+F7

centos字符界面怎样调字体大小

问题描述 centos字符界面怎样调字体大小 centos6.3纯字符界面下 ,怎样调节字体和大小........... 解决方案 解答:CentOS 6.0的grub.conf参数大概如下: 复制代码 代码如下:title CentOS (2.6.32.5-124.centos6.x86_64) root (hd00)kernel /vmlinuz-2.6.32.5-124.centos6.x86_64 ro root=UUID=236fef23-35fb-4c49-924c-a1be7738

电脑修改了磁盘分区后,上不了linux了,一直在字符界面

问题描述 电脑修改了磁盘分区后,上不了linux了,一直在字符界面 电脑修改了磁盘分区后,上不了linux了,一直在字符界面,求助啊... 解决方案 你可以试试这个,我之前也遇到和你一样的问题,直接在字符界面操作就好了http://blog.csdn.net/ZSGG_ACM/article/details/46825803 解决方案二: 你用的是什么引导器,如果是grub,修复下http://blog.chinaunix.net/uid-27037833-id-3235145.html 解决方

嵌入式arm linux蓝牙文件传输移植

嵌入式arm linux蓝牙文件传输移植目前,蓝牙技术已经比较成熟,特别是基于手机和PC得蓝牙文件传输. 本文主要讲述基于嵌入式arm linux的蓝牙文件传输.    现行2.6.x的linux内核都已经集成了bluez蓝牙驱动,对于2.4版本内核的需要到bluez官方网站下载并安装bluez蓝牙驱动.http://www.bluez.org/download/    本为基于2.6版本的内核讲述.对于2.4下载bluez后安装即可.有了bluez蓝牙驱动还需要安装bluez-libs库和bl

ubuntu启动到字符界面和图形界面的设置

1.设置ubuntu14.04启动到字符界面: 修改Grub配置文件: /etc/default/grub 将配置语句 GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash" 修改为 GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash text" 运行Shell命令: sudo update-grub 运行Shell命令: sudo shutdown -r 0 重启系统 2.设置ubuntu14.04