教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> SVGA图像处理

SVGA图像处理

上传者:网友
|
翻新时间:2013-12-18

SVGA图像处理

SVGA图像处理 SVGA图像处理 SVGA图像处理 SVGA彩色图形卡是一种超级VGA卡,它不仅具有640×480×16色图像显示模式,而且具有640×480×256色图像显示模式。

Microsoft C/C++7.0提供了丰富的图形库函数,尤其是提供了对SVGA卡所能设置的高分辨率图像模式的支持,利用丰富的图形库函数进行组合,就可以完成各种需要的功能。例如图像处理,动画编程,界面制作等。这一点对编程者来说无疑是十分方便的。根据VESA图形标准,在图像模式下,SVGA的Video buffer(视频缓冲区)是顺序的链结构,且图像数据是按行序顺序存放的,一个像素(屏幕上的一个点)用存储器的一个字节(256色)表示。视频存储器按字节连续寻址,与主机内存采用映射方式通讯,一次只能读写64KB的视频存储器,通过改变段偏移量(I/O操作)来寻址不同的段,即实现对全部视频存储器的操作。

同时,直接访问SVGA的寄存器进行读写操作,充分利用硬件的支持可以大大加快图形的处理速度。实践表明,其运行速度明显优于图形库中提供的函数(以-getimage()和-putimage()为例快30倍)。-getimage()和-putimage()两个函数的参数类型说明及意义与Microsoft C/C++7.0中相应函数的参数类型说明及意义相同。

/* 将图像存储到缓冲区中 */short x1,y1,x2,y2;

char-huge *image;

{

char-far*buf,-huge *q;

long u;

short m,n,i,j,block;

m=abs(x2-x

1)+1;

n=abs(y2-y

1)+1;

(short)*image=m;

(short)*(image+

2)=n;/* 保留图像的高度与宽度 */

q=image+4;u+=min(y1,y

2) * 640L;

block=(short)(u/65536L);

u-=block*65536L;/* 计算偏移量 */

-FP-SEG(buf)=0xA000;

-FP-OFF(buf)=u;

-outp(0x3c4,

1

4),

-outp(0x3C5,block^

2);/* 设置页寄存器 */

for (i=0; i<n; i++, q+=m) {/* 行循环 */

-memcpy(q, buf, m);

u+=640;

if(u<65536L) buf+=640;

else {/* 当一行不在同一段时 */

u-=65536L;

-FP-SEG(buf)=0xA000;

-FP-OFF(buf)=0;

block++;

-outp(0x3C4,

1

4);

-outp(0x3C5,block^

2);

if(m>640-u)-memcpy(q+640-u,buf,(size-t)(m-640+u));

-FP-OFF(buf)=u;

}

}

}

/* 在缓冲区中搜索图像 */

void-putimage256(x,y,image,action)

short x,y,action;/* 参数action表示图像写方式 */

char-huge * image;

{

char-far *buf,-huge*q;

long u;

short m, n, j, i, block, mm;

-memcpy(&mm, image,

2);

if ((x+mm)>6

40) m=640-x;

else m=mm;

-memcpy(&n, image+2,

2);

if (y+n>4

80) n=480-n;/* 取图像的高度和宽度,并进行边界处理 */

q=image+4;

u=x;

u+=y*640L;

block=(short) (u/65536L);

u-=block*65536L;

-FP-SEG(buf)=0xA000;

-FP-OFF(buf)=u;

-outp(0x3C4,

1

4);

-outp(0x3C5, block^

2);

for (i=0; i<n; i++,q+=mm) {

if (action==-GPSET) -memcpy(buf, q, m);

else if(action==-GOR)for (j=0;j<m; j++) * (buf+j)|=(*(q+j));

else if(action==-GAND)for (j=0;j<m; j++) * (buf+j)&=(* (q+j));

else if(action==-GXOR)for (j=0;j<m; j++) * (buf+j)^=(* (q+j));

else if(action==-GPRESET)for (j=0;j<m; j++) * (buf+j)=~(* (q+j));

u+=640;

if(u<65536L) buf+=640;

else {

u-=65536L;

-FP-SEG(buf)=0xA000;

-FP-OFF(buf)=0;

block++;

-outp(0x3C4,

1

4);

-outp(0x3C5, block^

2);

if (m>640-u) {

if (action==-GPSET) -memcpy(buf,q+640-u, (size-t)(m-640+u));

else if(action==-GOR)

for(j=0;j<m-640+u;j++) *(buf+j)|=(*(q+640-u+j));

else if(action==-GAND)

for(j=0;j<m-640+u;j++) * (buf+j)&=(*(q+640-u+j));

else if (action==-GXOR)

for(j=0;j<m-640+u;j++) * (buf+j)^=(*(q+640-u+j));

else if(action==-GPRESET)

for(j=0;j<m-640+u;j++) * (buf+j)=~(* (q+640-u+j));

}

-FP-OFF(buf)=u;

}

}

}

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

神奇的笔
一个有趣的活动
校园运动会
给震区小姐姐的一封信
可爱的小猪
《狮子王》观后感
快乐的暑假
我的爸爸
给妈妈的留言条
考试
我是体育委员
我的梦
可爱的小白
参观博物馆
三只小兔吃苹果
中秋月饼节活动方案
2012年房地产中秋晚会策划方案
酒店餐饮国庆节促销活动主题
2012年酒店国庆节促销方案
2010企业中秋节活动方案2则
酒店中秋节营销活动方案
2010国庆节小学活动方案
学校工会庆祝国庆节活动方案
中秋节员工活动方案
酒店中秋节促销活动方案
学校中秋节活动方案
2012年中秋节活动方案策划
小学国庆节活动方案
2012年中秋节活动方案策划
中秋节客户送月饼活动方案
有关事实劳动关系的思考(1)论文
论商标侵权中的“反向假冒”及其法律规制(1)论文
论电视纪录片
论《非缘勿扰》将生活剧换上偶像剧马甲
浅论环境污染责任的适用范围(1)论文
论网络电视与传统电视的关系
分析地方电视台节目的平民化
分析纪录片中音响的功能
浅谈我国民事诉讼证据规则的立法与完善(1)论文
浅论侵权法中的防御请求权(1)论文
现在进行时纪录片有预期“等拍”探论
陈乔恩偶像剧女王的不败神功
探讨环境权的社会定位问题(1)论文
浅谈权利视角下的民事执行权改革(1)论文
谈影片《让子弹飞》中的启蒙话语
《一分钟》教学设计资料
《黄山奇石》 教学设计一
《秋天的图画》 教学设计二
《比尾巴》教学设计15
《秋天的图画》 教学设计三
《静夜思》教学设计4
《比尾巴》教学设计13
《比尾巴》快乐练习
《称赞》教学案例
《比尾巴》教学设计14
《秋天的图画》 教学设计一
《比尾巴》教学设计16
《黄山奇石》 教学设计二
《比尾巴》教学设计4
《我选我》 教学设计二