教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 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;

}

}

}

下载文档

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

网友最新关注

风的传奇
在这个不寻常的春天里
我爱制作空模
写动物的作文400字四年级 描写动物的作文精选5篇 
月亮辞职记
一条沙丁鱼的独白
在这个不寻常的春天里
渔人和沙丁鱼
我的快乐梦想
谁不说俺家乡好
太阳帆船
霜叶为什么这样红
“生态赤字”与科学双刃剑
蜜蜂和蚂蚁
在这个不寻常的春天里
地方报纸信息数据库建设存在的问题及发展设想
民族文献工作的思考
论东北地方文献联合书目数据库共建工作
闽台两地图书馆共建共享地方文献数据库存大有可为
浅析案例教学法在法理学课程中的应用
福建省图书馆闽台地方文献收集与利用
刘国钧与国立西北图书馆同辉
试论校园网的高校思想教育工作的思考
人物信息处理系统的设计与使用
简析校长领导的思想转变与艺术
地方文献数据库系统
方志传记资料索引数据库的设计与实现
谈谈搜集地方文献中的几个问题
试论探索现代办公技术在高职《应用写作》课程中的运用
试论大一新生专业思想教育的问题与方法
《翠鸟》 美文
《翠鸟》 同步练笔 范文
《珍珠泉》 教师语录
《翠鸟》 写作素材
《翠鸟》 写作指导
《翠鸟》重点问题探究
《翠鸟》重点字词梳理
《翠鸟》 作者简介
《翠鸟》 教案1
《珍珠泉》 重点字词梳理
《翠鸟》 随堂练习 提高篇
《翠鸟》 相关资料
《翠鸟》 教案2
《翠鸟》 考点练兵 A组
《珍珠泉》 作者简介及作品介绍