设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 游戏开发 >> 特效天地——水波
精品推荐
游戏开发点击TOP10
·DirectX5.0最新游戏编程指南 DirectDraw教程篇 二、第一个DirectDraw实例
·用Excel编写小游戏
·五子棋的原代码
·游戏开发方面相关的电子书下载
·游戏文件系统的解决方案
·基于LOD的大规模真实感室外场景实时渲染技术的初步研究 part II&III
·用MFC构造DirectX应用框架
·游戏开发开门
·《Windows游戏编程大师技巧》(第二版)第11章
·DirectX8.1的DirectDraw7研究手记(三)
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

特效天地——水波

作者: 来源:网络文章 时间:2005-12-17 23:26:56

特效天地——水波(4)         for (int j=0; j<BACKWIDTH; j++)
        {
            //计算偏移量
            xoff =buf1[k-1]-buf1[k+1];
            yoff =buf1[k-BACKWIDTH]-buf1[k+BACKWIDTH];

            //判断坐标是否在窗口范围内
            if ((i+yoff )< 0 ){k++; continue;}
            if ((i+yoff )>BACKHEIGHT) {k++; continue;}
            if ((j+xoff )< 0 ){k++; continue;}
            if ((j+xoff )>BACKWIDTH ) {k++; continue;}

            //计算出偏移象素和原始象素的内存地址偏移量
            int pos1, pos2;
           pos1=ddsd1.lPitch*(i+yoff)+ depth*(j+xoff);
            pos2=ddsd2.lPitch*i+depth*j;

            //复制象素
            for (int d=0;d<depth; d++)
               Bitmap2[pos2++]=Bitmap1[pos1++];
            k++;
        }
    }
    //解锁页面
    lpDDSPic1->Unlock(&ddsd1);
    lpDDSPic2->Unlock(&ddsd2);
}

增加波源

俗话说:无风不起浪,为了形成水波,我们必须在水池中加入波源,你可以想象成向水中投入石头,形成的波源的大小和能量与石头的半径和你扔石头的力量都有关系。知道了这些,那么好,我们只要修改波能数据缓冲区buf,让它在石头入水的地点来一个负的“尖脉冲”,即让buf[x,y]=-n。经过实验,n的范围在(32~128)之间比较合适。

控制波源半径也好办,你只要以石头入水中心点为圆心,画一个以石头半径为半径的圆,让这个圆中所有的点都来这么一个负的“尖脉冲”就可以了(这里也做了近似处理)。

增加波源的代码如下:

//*****************************************************

共5页 9 7 [1] [2] [3] [4] [58 :>

特效天地——水波 相关文章:
特效天地——水波 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com