教育资源为主的文档平台

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

}

}

}

下载文档

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

网友最新关注

逛商场
我是包饺子的小能手
乐乐的翅膀
倒霉的新年
秋天
如果我会飞
压岁钱怎么花
值日
学擀饺子皮
我的家乡
我去姥姥家
我的神矛表演多精彩
买菜
永大王
我是一个小陀螺
农村团员服务区方案
×村救灾重建工作实施方案
XX市旅游局旅游网网站模块DMS项目拓展方案
“青春飞扬”校园科技文化艺术节活动方案
×镇2004—2006年社会治安防控体系建设实施方案
××县水利工程管理体制改革实施方案
×厂“杰出青年”创评活动实施方案
旅游宣传包装促销方案
2004年城南镇联动中心工作方案
城市客运秩序整治实施方案
开展第十个党风廉政教育月活动实施方案
**大队深入开展“三互”活动的实施方案
*电信文明单位创建方案
中心学习小组学习实施方案
纪念建党83周年活动方案
探讨高师音乐专业钢琴课程结构调整的构想
试论中国民族声乐的学习策略
试论音乐欣赏教学中的音乐体裁分析
浅谈如何上好非音乐专业大学生音乐赏析课
探讨新课程下高师音乐课堂的师生交流与互动
浅谈苗族民歌《飞歌》及其在非原生态音乐作品中的延展
浅谈音乐在广告创意中的运用
试论职业高中音乐教育的创新意识培养
浅谈培养学生音乐学习能力 提高高中音乐教学质量
试论提高钢琴练习效率的有效方法
试论多媒体在音乐教学中的影响
试论蒙古族舞蹈在不同时期的创作风格
试论树立“原作”意识,寻求演唱的最佳途径
探析消费艺术语境下解读剧场民间歌舞
浅议高师《中国民族民间舞蹈》课程教学改革与实践
《北京》教学设计
《看雪》教学设计
《葡萄沟》教案
《最大的“书”》教学设计
《浅水洼里的小鱼》教学设计
《数星星的孩子》教学设计
《蓝色的树叶》教学设计
《我要的是葫芦》第一课时教案
《纸船和风筝》教学设计
《从现在开始》教学设计
《找春天》教案
《酸的和甜的》教学设计
《雷雨》教学设计
《称赞》
《雷雨》第二课时教案