计算机属性原理,计算机图形显示原理(第四节上)

第四节 VGA显示卡原理

一、VGA的结构VGA显示卡的主要组成如下图所示:

各组成部分及各部分的基本功能如下。

显示存储器(Display Memory)

VGA的显示存储器是一种动态随机存储器(DRAM或VRAM),显示存储器以一定的数据格式完整地保存着当前所要显示的一整屏图象,主机的CPU通过向显示存储器写入数据来实现图象显示,显示卡则根据存储器中所存储的数据来控制显示器进行图象显示。

图形控制器(Graphics Controller)

图形控制器位于CPU和显示存储器之间的数据通道上,在CPU读写显示存储器时,图形控制器是透明的。图形控制器提供了对写入存储器的数据进行逻辑操作、移位操作,对读出数据进行比较的功能,通过对图形控制器编程即可获得对这些功能的硬件支持,加快图形操作速度。

CRT控制器(CRT

Controller)

CRT控制器产生时序信号,以对显示器的光栅扫描及屏幕刷新进行同步控制,它控制着显示器的分辨率、各种扫描频率及扫描过程的时序,同时它还控制着光标状态、屏幕与显示存储器的映射关系。

CRT控制器的时序状态一般是通过BIOS来设置,直接编程来修改它的时序状态是比较困难的。通过对CRT控制器编程,可改变屏幕与显示存储器的映射关系,由此可用硬件实现滚动、漫游、屏幕分割、多显示页等特殊功能。

数据串行发生器(serialize)

数据串行发生器从显示存储器中读取图象数据,并将所读出的数据串行化,发送给属性控制器或数模转换器。

属性控制器(Attribute Controller)

属性控制器主要在16色模式下起作用,它有一个16色对256色的颜色查找表,通过该表将4位的颜色值转换为8位的颜色值,然后将这8位的颜色值传送给数模转换器。在256色模式下属性控制器将被忽略。

VGA的属性控制器继承于EGA,在EGA上其颜色查找表为16色对64。在VGA上属性控制器实际上并无存在的必要。

数模转换器(DAC)

数模转换器有一个8位对18位的颜色查找表,它将来自属性控制器或数据串行发生器的8位颜色值转换为18位的颜色值,这18位颜色值被分成3个6位,分别用来表示红绿蓝三色的亮度,最后,这三个6位值被转换为三个模拟信号值发送给显示器,以控制三个电子束的强弱。

在真彩色和高彩色模式下,红绿蓝三色的亮度值直接来自数据串行发生器,这时颜色查找表将不起作用。

通过编程可修改属性控制器和数模转换器中的色彩查找表,从而可以在一个很宽的范围内对16色和256色模式下的颜色值进行设置。

定序器(Sequencer)

定序器产生点和字符的时钟,控制整个适配器上所有功能的时序。定序器还用于确定字符发生器的位置,仲裁CPU及适配器对显示存储器的访问,屏蔽CPU对某一位面的修改。

二、VGA显示模式VGA在任一时刻都必须工作在某一显示模式之下,它的显示模式分为字符模式和图形模式两大类。

字符模式也称文本模式,在字符模式下,最基本的操作单元为字符,一屏所能显示字符的行数和列数及字符属性的表示方法即构成了一种具体的字符显示模式。VGA标准的字符显示模式为80列、25行、16色。字符模式具有极快的显示速度,但它不能显示图形。在图形模式下,最基本的操作单元为单个象素点,一定的象素分辨率及一定的色彩表示方式即构成了一种图形显示模式。VGA的图形模式分为三类:CGA、EGA兼容图形模式;标准VGA图形模式;VGA扩展图形模式。后两种模式统称为VGA图形模式。本书将只介绍VGA图形模式的编程技术,而不涉及对字符模式和CGA、EGA兼容图形模式的介绍。

VGA可以支持多种分辨率及多种色彩表示方式,多种分辨率与多种色彩表示方式相组合即形成了非常丰富的VGA图形显示模式。三、色彩表示方式VGA显示器及显示器与显示卡的接口都采用模拟方式来处理色彩,因此它们都具有无限的色彩显示和传输能力。但主机和显示卡只能用数字方式来表示和处理色

彩,在用数字方式表示色彩时,如果要获得更丰富更细腻的色彩就需要增加表示色彩的数据位数,这就需要更大容量的显示存储器,相应的也就需要有更高的处理速

度,而同时分辨率的提高也对显示存储器的容量提出了很高的要求。为了尽量降低对显示存储器容量的需求,在VGA上采用了一种间接色彩表示方式:用一个索引值来确定各个象素点的颜色,而不是直接用红绿蓝三基色的亮度值来确定每个象素点的颜色,然后用一个色彩查找表来确定每个索引值所对应的真实颜色值。索引值占用较少的数据位,而用较长的数据位来定义色彩查找表中的真实颜色值,这样既能减少显示存储器的容量,又能获得丰富细腻的色彩显示能力,但这时在同一屏图象中所显示的不同颜色的数量要受到索引值取值范围的限制。VGA的颜色查找表采用18位数据来定义一个真实颜色,红绿蓝三种基色各占6位,每种基色可有64级亮度,总共可组合出262144(256K)种颜色。

VGA的颜色索引值采用了4位和8位两种数据长度:4位数据可有16种不同的取值,其对应于VGA的16色模式,这时一屏只能显示16种不同的颜色;8位

数据可有256种不同的取值,其对应于VGA的256色模式,这时一屏可显示256种不同的颜色。这种采用间接色彩表示方式的图形模式称为间接色彩模式,

较早的VGA都只具有这种间接色彩模式。

随着显示速度的提高、存储器价格的下降及应用要求的提高,在VGA上又出现了直接用红绿蓝三基色的亮度值来确定每个象素点颜色的直接色彩模式,在直接色彩模式中用16位或24位来定义一个象素的颜色,16位的模式称为高彩色模式,24位的模式称为真彩色模式。在高彩色模式中,每个基色占5位或6位数据、有32级或64级亮度,总共有32768(32K)种或65536(64K)种颜色;在真彩色模式中,每个基色占8位数据、有256级亮度,总共有16777216(16M)种颜色。与间接色彩模式相比,直接色彩模式完全消除了同屏颜色数的限制,简化了软件的色彩操作方式,并可以获得更加细腻的色彩。

24位的直接色彩模式之所以被称为真彩色模式,是因为这种模式事实上已达到了CRT显示器色彩表现能力的极限,在这种模式下人的视觉已无法从屏幕上分别出

相邻两种颜色的差别,这时进一步增大表示色彩的位数已不再有意义。在某些计算机图形系统中存在着一种32位的色彩表示方式,但在这种表示方式中,用来描述

颜色值的仍然只有24位,剩下的8位被用来描述三维图象处理中所需的一些属性。

表1-1列出了VGA所支持的各种色彩模式及它们的有关特性。在某些VGA上还有4色和2色模式,但这些模式很少被使用,且不被VESA标准支持。

表1-l

VGA色彩模式

色彩模式

数据位

同屏颜色数

最大颜色数

亮度级

表示方式

16色

4

16

262144(256K)

64

间接色彩

256色

8

256

262144(256K)

64

间接色彩

15位高彩色

15

215(不限)

32768(32K)

32

直接色彩

16位高彩色

16

216(不限)

65536(64K)

32或64

直接色彩

24位真彩色

24

224(不限)

16777216(16M)

256

直接色彩

对直接色彩模式有时也用数据位数或最大颜色数来表示,如15位高彩色有时也被称为15位色或32色,24位真彩色有时被称为24位色或16M色。四、分辨率显示器所显示的分辨率由显示卡来控制,VGA可以在一个很大的范围内支持多种分辨率,表1-2列出了VGA所支持的各种分辨率及有关特性。

表1-2

VGA的分辨率

分辨率

整屏象素数

宽高比

水平修正率

垂直修正率

320×200

64000

1.6

1.2

0.833

512×480

245760

1.067

0.8

1.25

640×400

25600

1.6

1.2

0.833

640×480

307200

1.333(4:3)

1

1

800×600

480000

1.333(4:3)

1

1

1024×768

786432

1.333(4:3)

1

1

1280×1024

1310720

1.25

0.9375

1.067

1600×1200

1920000

1.333(4:3)

1

1

2048×2048

4194304

1.0

0.75

1.333

在选择分辨率时,分辨率的宽高比是一个需要考虑的因素,它指水平象素数与垂直象素数之比。在软件中通常是以象素为单位对图形的尺寸进行控制,这时如果分辨率的宽高比与屏幕的宽高比1.333(即4比3)不一致,所显示的图形就会发生变形,如圆变成椭圆,正方形变成长方形,水平修正率是在分辨率的宽高比与屏幕不一致时,用来对图形的水平尺寸进行变换的系数,它等于分辨率宽高比除以屏幕宽高比。垂直修正率是水平修正率的倒数,它用来对图形的垂直尺寸进行变换,对一幅图形只需从一个方向进行修正。对图形的修正总会降低软件的作图速度,并且会使软件变得复杂,因此在软件中应尽量采用那些宽高比与屏幕一致的分辨率,即水平修正率和垂直修正率部为1的分辨率。表2-2所列出的只是VGA上常见的一些分辨率,在某些VGA上还提供了其它一些不常用的分辨率。事实上通过直接对VGA的CRT控制器编程,就可以在显示存储器容量及扫描频率所允许的范围内对VGA的分辨率进行任意设置,但这项工作比较复杂而且无法保证兼容性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程解决的问题: 作为游戏行业或者图形学从业者,你是否面临以下问题: 到底openGL底层如何实现的? 到底矩阵操作变换是怎么做到的? 到底光栅化的算法以及原理是什么? 到底如何才能从3D世界投射到2D屏幕呢? 图形学有这么多的矩阵操作,到底如何推导如何应用呢? 学完这门课程,你应该就可以从底层了解一个初级的openGL图形接口如何实现,图形学最底层的封装到底面临哪些挑战;跟随我们一行一行写完代码,你就会得到一个迷你版本的openGL图形库,你可以深度体会图形从模型变换,观察矩阵变换,投影矩阵变换一直到光栅化纹理操作的全套模拟流程。 课程介绍: 本课程将带领学员不使用任何图形库,实现从0到1的图形学接口封装以及算法讲解,并且带领大家手敲代码,一行一行进行实现。 涵盖了(环境搭建,绘制点,Bresenham算法绘制完美直线,三角形拆分绘制算法,颜色插值算法,图片操作,图片二次插值放缩算法,纹理系统接口搭建及封装,矩阵操作理论以及实践,openGL类似接口封装,3D世界的图形学理论及接口封装等) 最终将带领大家通过C++实现一个3D世界的图形接口,方便所有人入门图形学,进行接下来的openGL接口以及GPU编程的学习   本课程为系列课程的第一步入门,且带领所有人进行实现,更加实用,可以让大家打牢图形学的基础知识及编程技能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值