新闻中心 | 电脑硬件 | 手机 | 数码相机 | 笔记本频道 | 服务器 | 美图频道 「总」 生活频道 渔鱼频道 电影频道 游戏频道 旅游频道 设为首页 | 收藏
网络学院
迷城学吧
硬件
手机
旅游
生活
渔鱼
美图
电影
游戏
  导航: 迷城学吧 · 系统编程教程 · C语言 · C语言编程实例  

在TVGA上完成全屏幕动画

图文推荐
『在TVGA上完成全屏幕动画』可能有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-6-7 

    在图像处理领域,当处理或分析序列运动图像时,需要在屏幕上连续显示这一序列图像(即动画播放),以便观察处理效果或分析动态信息。一般游戏动画的设计方法是慢速移动背景和快速刷新运动目标(小画面),难以实现全屏动画效果。为此笔者采用了汇编语言编程和快速写屏的方法,在普通的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 <graph.h>
    #include <stdio.h>
    #include <dos.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    #include <time.h>
    #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(0

[1] [2] [3] 下一页

】【关闭窗口
  ·上一篇:
  ·下一篇:
C语言编程实例:相关文章
C语言编程实例点击榜
普通教程氢原子电子云模拟显示
普通教程非常漂亮地4-瓣花型图案
普通教程旋转地立体椭球(效果非常好)
普通教程静态网格椭球
普通教程弹簧单摆地模拟演示
普通教程一个时钟程序,可以显示当前时间
普通教程自己写地一个链表综合程序
普通教程锁硬盘逻辑盘程序
普通教程学生成绩管理系统
普通教程学生个人消费管理系统
网友自拍|生活百味|历史图片|摄影世界|明星图片|体坛图库|美女图片|图片纪实|世界奇观
电脑硬件推荐文章
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 库库中文网 | 设为首页 | 本页加入收藏 返回顶部
网站文本地图
版权所有:迷城学吧 欢迎各种媒体转载我们的原创作品[转载请注明出处]
Copyright © 2005-2008 www.McXb.com online services. all rights reserved. 蜀ICP备09003996
Template designed by Monsi. Optimized for 1024x768 to Firefox and MS-IE6 7. Site powered by JoyON.
红盾Gov315
有一个迷样的城市
在每个人的内心深处
让我们探索发掘这古老的墓