首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心计算机论文计算机理论

Tags:


   ○在TVGA上实现全屏幕动画      ★★★ 【字体: 】  
○在TVGA上实现全屏幕动画
收集整理:佚名    来源:本站整理  时间:2009-01-10 12:05:01   点击数:[]    

[本篇论文由上帝论文网为您收集整理,上帝论文网http://paper.5var.com将为您整理更多优秀的免费论文,谢谢您的支持]
   在图像处理领域,当处理或分析序列运动图像时,需要在屏幕上连续显示这一序列图像(即动画播放),以便观察处理效果或分析动态信息。一般游戏动画的设计方法是慢速移动背景和快速刷新运动目标(小画面),难以实现全屏动画效果。为此笔者采用了汇编语言编程和快速写屏的方法,在普通的486微机(主频66M,配TVGA9000卡)上达到了每秒显示10幅640×480×256灰阶图像的速度,效果令人满意。

首先设置TVGA卡使其工作在0X5d方式下,屏幕分辨率是640×480×256色。然后重新构造调色板(RemapPalette()),使其适于显示256灰阶的图像。由于TVGA卡的颜色寄存器使用18位存储模式,即R、G、B分量各占6位,而要显示灰度图像R、G、B分量必须赋予相同的值,所以就只能显示区分26=64灰阶的图像。不过,实验表明人眼已无法区分64灰阶与256灰阶图像的差别。因此,在构造调色板时,0~3索引值对应的R、G、B分量值都为0,4~7索引值对应的R、G、B分量值都为1,…,依次类推,这样就可以正确显示一幅256灰阶的图像。

以下是动画播放序列运动图像完整的源代码(AVD.C)。为连续显示一序列图像,先将序列图像的数目(如20)、存放图像数据文件的路径(f:\zyf\)、图像文件的名称(如z1.img,z2.img,…)录入一文本文件(如imggroup.lst),运行程序时只需键入AVD imggroup.lst即可。源程序中显示每幅图像的代码部分采用嵌入汇编语言编写,以得到较高的显示速度。在程序运行过程中,按下空格键暂停;连击空格键实现单帧播放;按下任意其它键恢复连续播放;按下退出键(Escape)退回DOS。在程序设计时,为避免在一个循环结束过渡到下一个循环开始时将要从序列的最后一幅图像切换到第一幅图像,因为这时由于图像运动的不连续性将产生突变,以至屏幕显示有抖动感或闪烁感,所以笔者采用了第一个循环正向播放,第二个循环反向播放(即正反相间)的方案。如果读者只希望正向播放,只须删除源程序中标有“//$$$”的四条语句行即可。

编译运行环境:本程序用MS C6.0编译通过,编译时请使用命令行参数/STACK:20480;图像数据文件来自大恒公司的VP32图像采集板(512×512×256灰阶)。

#include

#include

#include

#include

#include

#include

#include

#define IMGGRP 30 //Image Number in a Cycle Showing

#define ESCAPE 27 //Stop Showing and Exit

#define SPACE 32 //Step Show--Hit Space Bar & One by One Showing

void RemapPalette(void);

void main (int argc,char *argv[])

{

static char grpflnm[IMGGRP][80];

char path[80],flnm[80],bindfn[80],arg[5];

char fnch[2]=\0;

char ch-imgnum[5];

int i,i1,i2,i12,ii,imgnum=IMGGRP;

int dispimgs,keyin,StepShow=0;

unsigned short int VSEG;

union REGS inregs,outregs;

FILE *fp;

unsigned short int row=480,col=512;

unsigned char fb[512];

int m-b=0;

clock-t cstart,cend; /* For clock */

unsigned short int FH; // File Handle

printf(\n ********** GROUP IMAGES ANIMATEDLY SHOWING ********* \n);

if(argc>1)

strcpy(flnm,argv[1]);

else

{

printf(\n Input the Image Group file name [.lst]:);

gets(flnm);

}

REDISP:

if(!strchr(flnm,.))

strcat(flnm,.lst);

if((fp=fopen(flnm,rt))==NULL)

{

printf(\n Open file failure!! \a\a\n);

printf(\n Please Check following files whether exist:);

printf(\n%s,flnm);

printf(\n\n Note:The file extension name is appended automatically,);

printf(\n such as [.lst]!);

exit(1);

}

inregs.x.ax=0x005d; // Set TVGA Mode:640x480x256 levels

int86(0x10,&inregs,&outregs);

RemapPalette(); // Remap all Palette

cstart= clock(); /* Use clock for timing to hundredths of seconds */

strcpy(ch-imgnum,\0);

for(;;) // Read image number in group

{

fread(fnch,sizeof(char),1,fp);

if((int)fnch[0]==10) break;

strcat(ch-imgnum,fnch);

}

imgnum=atoi(ch-imgnum);

strcpy(path,\0);

for(;;) // Read image path in group

{

fread(fnch,sizeof(char),1,fp);

if((int)fnch[0]==10) break;

strcat(path,fnch);

}

for(i=0;i1) goto ENDP;

printf(\n Display Another Image Group(Y/[N])?);

gets(arg);

if(!strcmp(arg,Y)!strcmp(arg,y))

{

printf(\n Input image file name:);

gets(flnm);

goto REDISP;

}

ENDP:

-SETVIDEOMODE(-TEXTC80);

printf( Show %5d images;Spend %4.2f seconds.\n,dispimgs,((float)cend-cst

art)

/CLK-TCK);

}

void RemapPalette(void)

{

register int i,j;

union REGS inregs,outregs;

for(j=0;j
   
     
     


转自: 仅仅学术交流与学习之用,非商业之目的.

文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:○可移植的256色图形用户界面的设计

  • 下一篇文章:○DOS界面下通用图形编辑软件的设计
  • 返回上一页】【打 印】【关闭窗口
    中查找“○在TVGA上实现全屏幕动画”更多相关内容 5VAR论文频道
    中查找“○在TVGA上实现全屏幕动画”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››中小企业办公自动化系统的设计与实...
  • ››未雨绸缪:关于我国电子商务税收对...
  • ››网上书店为钱做秀 行业走势两极分...
  • ››Win2000索引服务的WEB应用
  • ››宽带化――电信发展的必由之路务
  • ››电子商务中x种错误思路和做法
  • ››网络营销与传统营销相比有何优势
  • ››Internet的下一个热点 从内容走向服...
  • ››基于CNAPS的流水号管理方法
  • ››网络时代的财务与会计:管理集成与...
  • ››在TVGA上实现全屏幕动画
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .