图形系统开发基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形系统开发基础
特别鸣谢star316 对本贴做出的错误指正做了很长时间的图形开发,自己打算把相关的技术重头屡屡,一点一点的写,不着急,先发一篇入门的1:搭建Linux下的图形系统开发环境图形输出在嵌入式开发中,多数是向FrameBuffer中写数据,然后会显示在LCD中,在Linux下做图形开发的时候,需要模拟各种环境,比如16位色的环境,32位色的环境等,这个时候需要在Linux中做一个配置的修改:
[root@localhost root]# vi /boot/grub/grub.conf复制代码
上面这条命令是用来编辑grub引导配置文件。该配置文件原来的内容为:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.26)
root (hd0,0)
kernel /vmlinuz-2.6.26
initrd /initrd-2.6.26.img复制代码将其修改为:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.26)
root (hd0,0)
kernel /vmlinuz-2.6.26 vga=0x314
initrd /initrd-2.6.26.img复制代码其实仅仅是在kernel /vmlinuz-2.6.26这一行末尾处加了一个vga=0x314,将Framebuffer设置为800x600x16的显示模式,其中
800x600是屏幕分辨率,16表示显示的是16bit的彩色。下面详细的说一下关于vesa vga参数的含义:
4bit 8bit 15bit
16bit 24bit 32bit
640x400 x 0x300 x
x x x
640x480 x 0x301
0x310 0x311 0x312 x
800x600 0x302 0x303 0x313
0x314 0x315 x
1024x768 x 0x305 0x316
0x317 0x318 x
1280x1024 x 0x307 0x319
0x31A 0x31B x
1600x1200 x 0x31C 0x31D
0x31E 0x31F x复制代码而在现在的开发环境中,和嵌入式平台中,用16bit的颜色的还是主流,所以,主要介绍一下16bit的颜色的类型,而颜色是由RGB组
成:
常见16位颜色的类型分为:
(1)565:依次排列为Red,Green,Blue,二进制表示为:
Red Green Blue
RRRRR GGGGGG BBBBB复制代码
(2)1555:依次排列为Alpha,Red,Green,Blue
Alpha Red Green Blue
A RRRRR GGGGG BBBBB复制代码565排列的颜色:
0xFFFF的颜色是白色,在RGB565中排列形式为:
R G B
11111 111111 111111复制代码
0xF800的颜色是红色,在RGB565中排列的形式为:
R G B
11111 000000 000000复制代码
0X7e0的颜色是绿色,在RGB565中排列的形式为:
R G B
00000 111111 000000复制代码
假设Alpha值为1的1555排列的颜色:
0XFC00的颜色是红色,在ARGB1555中排列形式为:
A R G B
1 11111 00000 00000复制代码
0X83E0的颜色是绿色,在ARGB1555中排列形式为:
A R G B
1 00000 11111 00000复制代码
其他颜色就不在这里一一赘述,需要在实践中慢慢累积与总结。RGB简介
前面介绍了做了很多表来体现的就是RGB颜色排列形式,那么什么是RGB呢?
概述
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。