网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C/C++ > 正文

c语言平台下动画技术实现方法浅析

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/04/07

网学网为需要C/C++的朋友们搜集整理了 c语言平台下动画技术实现方法浅析 相关资料,希望对各位网友有所帮助!

   一、引言现阶段, 在各种高级语言风生水起的情况下, 用 C 语言编写图形动画的比例仍旧非常高,特别是在计算机游戏开发中。我们通常使用 C语言图形函数库进入图形模式绘制各种图形。利用 C 语言编写动画程序, 直接通过和硬件打交道来实现图形绘制, 可以有效的提高代码运行效率。C 语言经过近几十年的发展, 动画技术已相当成熟。本文就其中一些较为常见的技术做一些介绍和分析。
  二、动画原理动画的实现所依据的是人的视觉延迟作用, 科学表明人的视觉有一种暂停效应, 当看一幅图像时, 这幅图像的信息就保存在眼睛里了,而后即使这幅图像突然消失, 其图像信息仍旧在眼睛里保存大约 0.1秒的时间, 大脑的感觉就好像这幅画还存在似的。因而当两张图片显示的时间间隔小于 0.1 秒时, 人感觉画面是连续的, 从而产生动画的效果。因此, 实质上, 动画就是由一连串的单幅静态图像, 在程序的控制下快速反复地循环显示而产生的。
  三、动画技术根据上面关于动画原理的陈述和分析, 我们可以利用 C 语言提供的许多图形函数方便地实现动画。显然从前面的动画原理我们知道有两个关键的地方需要解决: 一是图形图像的产生方式, 要求产生图像要准确; 二是两幅图像之间地转换速度, 要求转换速度要快, 不能产生闪烁感, 只有这样动画才真实流畅。下面我们就 C 语言平台下常用的动画技术做一些简要的陈述和分析。
  1.屏幕重画技术 重画技术比较简单的理解就是, 在同一块幕布上画了擦,擦了再画,不断循环下去, 也就是不断直接重画屏幕显存即可。当重画的速度达到一定值时, 就实现了动态效果。从重画的方式上, 我们把重画技术分为直接重画、双缓冲、页替换和多缓冲。其中较为常见的是直接重画和双缓冲技术。
  直接重画就是不断直接重画屏幕显存, 可以分为全屏重画和局部重画。全屏幕重画是每次画面显示之后清屏, 然后再重画。然而通常画面中真正运动的往往只是一些局部对象, 因而我们可以利用局部重画技术, 只重画图片中运动的部分, 而整个屏幕背景通常保持静止的部分, 我们选择不重画。C 语言图形函数库为我们提供了用于保存和重画屏幕区域的函数 getimage()和 putimage(),并提供了内存分配函数malloc()或 farmalloc()来申请内存空间, 利用这 4 个函数和合理的流程控制语句, 就可以实现直接重画和局部重画。
  双缓冲技术要求开辟一块与显示对象相同大小的内存区域, 每次操作都只对这块内存进行, 在屏幕看到的是完成后的画面。我们可以这样理解, 有两个屏幕, 一个是我们看到的屏幕( 我们称为前台屏幕) ;一个是绘制图像的屏幕( 我们称为后台屏幕) , 后台屏幕就是我们前面所说的那块与显示对象相同大小的内存区域。将一张画面在后台屏幕中绘制完成后, 等前台屏幕显示足够长的时间后再将其替换上去。C语言为我们提供了申请缓冲空间函数、释放双缓冲函数、程序中映射缓冲函数来完成双缓冲技术。
  2.改进型双缓冲技术 改进型双缓冲技术也称作拉平技术, 因为它是对重画技术中双缓冲技术的改进, 因而也被称作改进型双缓冲技术。其实质是将原先需要全部复制的映射内存变为只要复制新移入屏幕的用于填补空白的那一部分即可,而原来的屏幕内容在复制之前全部按照要求向相应方向拉出一段距离,这样使得大规模的内存间复制变成了自身复制和小规模的内存间复制, 从而能够大大提高动画的速度和质量。这种模式下对显存的要求要高一些, 这样拉屏技术可以得到更多的发挥。例如可以直接移动显存来实现动画, 显存空白的部分通过双缓冲对应位置来填充。其过程是先在内存中建立大型的图像,然后将其分割成若干个图片, 将当前需要的图像调入显存, 接受用户方向信息, 时刻计算新的客户需求, 将事先绘制好的大图像进行偏移,使用户需求的图像进入视野。依次进行, 就可以实现相应所需的动画效果。这种技术是对双缓冲技术的改进, 因而在实现的过程中可以使用重画。所不同的是重画技术是将整个显示区域按照新的客户需求从内存复制到显存, 而改进型双缓冲技术则仅仅从内存复制事先显存中没有的新画面内容到显存, 这样很大程度减少了数据交换时间。
  3.异或动画技术 根据异或逻辑关系的真值表可知, 如果对一幅图像进行两次异或方式绘图, 则第二次的绘图会将第一次的图形擦除掉, 也就是实现了对前面图像的清屏, 从而保证看到的只是新的运动的图像。例如在一个位置画一个红色的圆,然后在这个位置再画一次,当然原有的那个圆还在,但如果我们在画第二个圆之前就设置用异或方式画线, 那么第一个圆就被清掉消失了。

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号