在tvga上实现全屏幕动画

在tvga上实现全屏幕动画

ID:25291451

大小:66.50 KB

页数:8页

时间:2018-11-19

在tvga上实现全屏幕动画_第1页
在tvga上实现全屏幕动画_第2页
在tvga上实现全屏幕动画_第3页
在tvga上实现全屏幕动画_第4页
在tvga上实现全屏幕动画_第5页
资源描述:

《在tvga上实现全屏幕动画》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、在TVGA上实现全屏幕动画  在图像处理领域,当处理或分析序列运动图像时,需要在屏幕上连续显示这一序列图像(即动画播放),以便观察处理效果或分析动态信息。一般游戏动画的设计方法是慢速移动背景和快速刷新运动目标(小画面),难以实现全屏动画效果。为此笔者采用了汇编语言编程和快速写屏的方法,在普通的486微机(主频66M,配TVGA9000卡)上达到了每秒显示10幅640×480×256灰阶图像的速度,效果令人满意。首先设置TVGA卡使其工作在0X5d方式下,屏幕分辨率是640×480×256色。然后重新构造调

2、色板(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)。为连续显

3、示一序列图像,先将序列图像的数目(如20)、存放图像数据文件的路径(f:zyf)、图像文件的名称(如z1.img,z2.img,…)录入一文本文件(如imggroup.lst),运行程序时只需键入AVDimggroup.lst即可。源程序中显示每幅图像的代码部分采用嵌入汇编语言编写,以得到较高的显示速度。在程序运行过程中,按下空格键暂停;连击空格键实现单帧播放;按下任意其它键恢复连续播放;按下退出键(Escape)退回DOS。在程序设计时,为避免在一个循环结束过渡到下一个循环开始时将要从序列的最后一幅

4、图像切换到第一幅图像,因为这时由于图像运动的不连续性将产生突变,以至屏幕显示有抖动感或闪烁感,所以笔者采用了第一个循环正向播放,第二个循环反向播放(即正反相间)的方案。如果读者只希望正向播放,只须删除源程序中标有“//$$$”的四条语句行即可。编译运行环境:本程序用MSC6.0编译通过,编译时请使用命令行参数/STACK:20480;图像数据文件来自大恒公司的VP32图像采集板(512×512×256灰阶)。#include<graph.h>#include<stdio.h>#in

5、clude<dos.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<time.h>#defineIMGGRP30//ImageNumberinaCycleShop;OnebyOneShoapPalette(void);voidmain(intargc,char*argv[]){staticchargrpflnm[IMGGRP][80];charpath[80],fln

6、m[80],bindfn[80],arg[5];charfnch[2]="";charch-imgnum[5];inti,i1,i2,i12,ii,imgnum=IMGGRP;intdispimgs,keyin,StepSho-b=0;clock-tcstart,cend;/*Forclock*/unsignedshortintFH;//FileHandleprintf("**********GROUPIMAGESANIMATEDLYSHOode:640x480x256levelsint86(0x

7、10,inregs,outregs);RemapPalette();//RemapallPalettecstart=clock();/*Useclockfortimingtohundredthsofseconds*/strcpy(ch-imgnum,"");for(;;)//Readimagenumberingroup{fread(fnch,sizeof(char),1,fp);if((int)fnch[0]==10)break;strcat(ch-imgnum,fnch);}imgnum=atoi(

8、ch-imgnum);strcpy(path,"");for(;;)//Readimagepathingroup{fread(fnch,sizeof(char),1,fp);if((int)fnch[0]==10)break;strcat(path,fnch);}for(i=0;ilt;imgnum;i++)//Readimagenameingroup{strcpy(grpflnm[i],"");for(;;){fre

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。