使用游戏引擎实现的水波纹

简介: <p><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/mysticboy/462983/o_asdfsadf.png"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0p

asdfsadf

这是波纹的截图。 程序运行时是波动的。

代码如下:

public static void valfff()
        {
            int ScreenWidth = 800; //; Feel free to change this to see the pixel filling speed !
            int ScreenHeight = 600;
            int[] CosTable = new int[ScreenWidth * 2];
            int[] ColorTable = new int[255];
            for (int i = 0; i             {
                CosTable[i] = (int)(GSin(360 * i / 320) * 32 + 32);
            }
            GameScreen gs = new GameScreen();

            // gs.OpenWindowedScreen(hande, 0, 0, 800, 600, 0, 0, 0);

            gs.OpenFullScreen(ScreenResolution.R800X600, ScreenColorDepth.X32, "srlPlasma");
            int Wave = 0;
            do
            {
                int tc = GetTickCount();
                Wave += 6;
                Wave = (Wave > 320) ? Wave = 0 : Wave;
                Console.Write(Wave);
                if (gs.StartDrawing() != 0)
                {
                    int iBuffer = gs.DrawingBuffer();
                    int iPitch = gs.DrawingBufferPitch();
                    PixelFormat iPixelFormat = gs.DrawingBufferPixelFormat();
                    if (iPixelFormat == PixelFormat.PF32Bits_RGB)
                    {
                        for (int i = 0; i                         {

                            ColorTable[i] = i                         }
                    }
                    else
                    {
                        for (int i = 0; i                         {
                            ColorTable[i] = i;
                        }
                    }
                    for (int y = 0; y                     {
                        int pos1 = CosTable[y + Wave];

                        int loc = iBuffer + iPitch * y;

                        for (int x = 0; x                         {
                            int pos2 = (CosTable[x + Wave] + CosTable[x + y] + pos1);
                            gs.SetVideoMemory(loc, ColorTable[pos2]);
                            loc += 4;
                        }
                    }
                    gs.StopDrawing();
                }
                gs.FlipBuffers();
                Console.WriteLine(GetTickCount() - tc);

            } while (gs.KeyIsReleased(Key.Escape) == false);
            gs.Close();

        }

        public static float GSin(float angle)
        {
            return (float)Math.Sin(angle * (2 * 3.14 / 360));
        }

目录
相关文章
|
3天前
|
XML Java Android开发
Android App开发动画特效之实现百叶窗动画和马赛克动画效果实战演示(附源码和演示视频 可直接使用)
Android App开发动画特效之实现百叶窗动画和马赛克动画效果实战演示(附源码和演示视频 可直接使用)
87 0
|
3天前
|
XML Java Android开发
Android App开发动画特效中帧动画和电影淡入淡出动画的讲解及实战(附源码和演示视频 简单易懂)
Android App开发动画特效中帧动画和电影淡入淡出动画的讲解及实战(附源码和演示视频 简单易懂)
49 0
|
5月前
|
算法 图形学
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
Unity小游戏——武士击杀小怪兽(无限滚动的背景)
|
5月前
|
机器学习/深度学习 算法 图形学
Unity小游戏——无限滚动的背景的改良
Unity小游戏——无限滚动的背景的改良
|
11月前
|
图形学
【游戏开发】unity透明特效的制作方法
Unity是一种强大的游戏开发引擎,它支持许多不同的特效和图形效果。其中一种常用的特效是透明特效,它可以使游戏中的材质变得半透明或完全透明。在本文中,我们将介绍如何使用Unity创建透明特效。
537 0
|
前端开发
UGUI系列-屏幕自适应多分配率适配(Untiy3D)
1、Canvas的属性配置 2、Canvas Scaler的属性配置 3、根据不同的屏幕的比例动态修改缩放基准
|
图形学
Unity 如何制作星空粒子效果?
本经验介绍在Unity游戏引擎中使用Particle System,如何使用自带资源,快速制作星空的粒子特效。工具/原料 Unity 方法/步骤1: 首先,新建一个场景,如果有自己的天空盒资源的话,在Window->Lighting下设置下天空(默认天空盒也不影响演示) 方法/步骤2: 新建一个空对象命名为Star, 为其添加Particle System组件。
3526 0
|
容器
Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)
原文:Silverlight & Blend动画设计系列五:故事板(StoryBoards)和动画(Animations)   正如你所看到的,Blend是一个非常强大的节约时间的设计工具,在Blend下能够设计出很多满意的动画作品,或许他具体是怎么实现的,通过什么方式实现的我们还是一无所知。
913 0
|
前端开发 图形学 Android开发