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()。
转载于:https://www.cnblogs.com/mao0504/p/5589746.html
linux之x86裁剪移植---字符界面sdl开发入门相关推荐
- linux之x86裁剪移植---ffmpeg的H264解码显示(420、422)
在虚拟机上yuv420可以正常显示 ,而945(D525)模块上却无法显示 ,后来验证了directdraw的yuv420也无法显示 ,由此怀疑显卡不支持 ,后把420转换为422显示. 420显示如 ...
- linux内核的裁剪和移植实验,实验5 linux内核的裁剪移植.doc
实验5 linux内核的裁剪移植 一.实验目的: 学习利用menuconfig配置文件进行裁减内核,编译内核并移植到开发板上. 二.实验内容 一.开发环境 宿主机:ubuntu10.04 开发板:ti ...
- 基于ARM的嵌入式linux 内核的裁剪与移植
0 引言 微处理器的产生为价格低廉.结构小巧的CPU和外设的连 接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面.尽管从八十年代末开始,已经陆续出现了一些嵌入式 ...
- linux字符界面教程,打造字符界面的多媒体Linux系统
打造字符界面的多媒体Linux系统 打造字符界面的多媒体Linux系统 0 环境与目标 硬件:ThinkPad R52笔记本一台. 目标:字符界面的LINUX系统,同时可以看图片,听音乐,看视频,无线 ...
- Linux启动界面切换:图形界面-字符界面(转)
Linux字符界面切换到图形界面 由字符界面切换到图形界面可用两种简单方法实现: 1.在字符界面输入startx或init 5 . 2.通过编辑/etc/inittab文件实现默认进入图形界面. 把其 ...
- Linux字符界面操作进阶
字符界面最重要的内容当然还是要记住各种命令了!下面我们来介绍一个字符界面下各种常用的操作命令. 常用的文本目录操作命令: ls显示文件和目录 touch创建一个空文件或改变文件的创建时间 cp复制文件 ...
- 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍
两款[linux字符界面下]显示[菜单],[选项]的powershell脚本模块介绍 powershell linux ps1 menu choice Multiselect 传教士 菜单 powe ...
- Linux字符界面和图形界面
Ubuntu图形界面和字符界面的切换 Ubuntu和其他的Linux系统一样,有图形界面和字符界面,同时能够设置默认的启动界面. linux的显示界面分为命令行的字符界面和图形界面,我们可以设置lin ...
- Linux内核的裁剪和移植
linux内核的裁剪和移植具体都在这个网址里面. https://blog.csdn.net/xie0812/article/details/10816059 https://blog.csdn.ne ...
最新文章
- C++学习笔记 简单部分
- android Handler更新UI
- CoreAnimation-Layer详解
- CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率
- Java开发工具 - IDEA 的使用及简单配置
- 计算机开机时10声响,电脑开机报警的声音有什么含义?详细教您认识报警声音
- 输入法linux debin,Debian下安装搜狗拼音输入法
- 大学计算机学术活动,计算机学院学术活动公告---南京理工大学Wai-Tat Fu教授学术报告...
- allgro pcb铜皮编辑_干货技巧-Allegro如何设置整体铜皮连接或设置单个管脚连接方式...
- xxl-job分布式任务调度的使用
- 用python画漂亮的生日蛋糕_一步一步最简单的最漂亮的画蛋糕
- Revit二次开发2、RevitAPI、RevitAPIUI及Revit开发三大利器
- android关机动画
- Sailfish OS 是Meego系统的重生吗?
- 内蒙古自治区交通运输管理局容灾备份设备招标
- 点击 数字随着变化html,js数字随着其他数字变化而变化?
- TabLayout单独使用
- Android 交流分享汇总
- 【科研思考】如何做学术研究?—— 我的方法论
- english accent
热门文章
- usaco Cowxor (trie 树)
- python减少内存_如何降低 Python 的内存消耗量?
- java unit包_Java接入UNIT文本对话处理源码详解
- centos gitlab mysql_CentOS-7下yum安装GitLab-CE
- 如何提取明细表头_会计新手,如何开展做账工作?
- ubuntu14.04如何在线安装eclipse以及C/C++开发组件,搭建软件开发平台
- 力扣(LeetCode)刷题,简单题(第15期)
- 红警2Linux版本
- popwindow下拉筛选 二级联动_职场人必备!一分钟搞定Excel二级联动下拉菜单
- 设置IDEA最多同时打开的窗口数量为100