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()。

转载于:https://www.cnblogs.com/mao0504/p/5589746.html

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

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

    在虚拟机上yuv420可以正常显示 ,而945(D525)模块上却无法显示 ,后来验证了directdraw的yuv420也无法显示 ,由此怀疑显卡不支持 ,后把420转换为422显示. 420显示如 ...

  2. linux内核的裁剪和移植实验,实验5 linux内核的裁剪移植.doc

    实验5 linux内核的裁剪移植 一.实验目的: 学习利用menuconfig配置文件进行裁减内核,编译内核并移植到开发板上. 二.实验内容 一.开发环境 宿主机:ubuntu10.04 开发板:ti ...

  3. 基于ARM的嵌入式linux 内核的裁剪与移植

    0 引言     微处理器的产生为价格低廉.结构小巧的CPU和外设的连 接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面.尽管从八十年代末开始,已经陆续出现了一些嵌入式 ...

  4. linux字符界面教程,打造字符界面的多媒体Linux系统

    打造字符界面的多媒体Linux系统 打造字符界面的多媒体Linux系统 0 环境与目标 硬件:ThinkPad R52笔记本一台. 目标:字符界面的LINUX系统,同时可以看图片,听音乐,看视频,无线 ...

  5. Linux启动界面切换:图形界面-字符界面(转)

    Linux字符界面切换到图形界面 由字符界面切换到图形界面可用两种简单方法实现: 1.在字符界面输入startx或init 5 . 2.通过编辑/etc/inittab文件实现默认进入图形界面. 把其 ...

  6. Linux字符界面操作进阶

    字符界面最重要的内容当然还是要记住各种命令了!下面我们来介绍一个字符界面下各种常用的操作命令. 常用的文本目录操作命令: ls显示文件和目录 touch创建一个空文件或改变文件的创建时间 cp复制文件 ...

  7. 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍

    两款[linux字符界面下]显示[菜单],[选项]的powershell脚本模块介绍 powershell linux  ps1 menu choice Multiselect 传教士 菜单 powe ...

  8. Linux字符界面和图形界面

    Ubuntu图形界面和字符界面的切换 Ubuntu和其他的Linux系统一样,有图形界面和字符界面,同时能够设置默认的启动界面. linux的显示界面分为命令行的字符界面和图形界面,我们可以设置lin ...

  9. Linux内核的裁剪和移植

    linux内核的裁剪和移植具体都在这个网址里面. https://blog.csdn.net/xie0812/article/details/10816059 https://blog.csdn.ne ...

最新文章

  1. C++学习笔记 简单部分
  2. android Handler更新UI
  3. CoreAnimation-Layer详解
  4. CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率
  5. Java开发工具 - IDEA 的使用及简单配置
  6. 计算机开机时10声响,电脑开机报警的声音有什么含义?详细教您认识报警声音
  7. 输入法linux debin,Debian下安装搜狗拼音输入法
  8. 大学计算机学术活动,计算机学院学术活动公告---南京理工大学Wai-Tat Fu教授学术报告...
  9. allgro pcb铜皮编辑_干货技巧-Allegro如何设置整体铜皮连接或设置单个管脚连接方式...
  10. xxl-job分布式任务调度的使用
  11. 用python画漂亮的生日蛋糕_一步一步最简单的最漂亮的画蛋糕
  12. Revit二次开发2、RevitAPI、RevitAPIUI及Revit开发三大利器
  13. android关机动画
  14. Sailfish OS 是Meego系统的重生吗?
  15. 内蒙古自治区交通运输管理局容灾备份设备招标
  16. 点击 数字随着变化html,js数字随着其他数字变化而变化?
  17. TabLayout单独使用
  18. Android 交流分享汇总
  19. 【科研思考】如何做学术研究?—— 我的方法论
  20. english accent

热门文章

  1. usaco Cowxor (trie 树)
  2. python减少内存_如何降低 Python 的内存消耗量?
  3. java unit包_Java接入UNIT文本对话处理源码详解
  4. centos gitlab mysql_CentOS-7下yum安装GitLab-CE
  5. 如何提取明细表头_会计新手,如何开展做账工作?
  6. ubuntu14.04如何在线安装eclipse以及C/C++开发组件,搭建软件开发平台
  7. 力扣(LeetCode)刷题,简单题(第15期)
  8. 红警2Linux版本
  9. popwindow下拉筛选 二级联动_职场人必备!一分钟搞定Excel二级联动下拉菜单
  10. 设置IDEA最多同时打开的窗口数量为100