Directx11教程(20) 一个简单的水面

nnd,以前发的这篇教程怎么没有了?是我自己误删除了,还是被系统删除了?

找不到存稿了,没有心情再写一遍了。

     简单说一下,本篇教程就是实现一个水面的动画,主要是利用动态顶点缓冲,在每一帧都改变顶点的值,从而实现水面的动画。主要参考的是《introduction to 3D game programming with d3d10》这本书,但D3D10和D3D11的动态缓冲实现有所改变。具体算法就不再说了,大家可以参考:

Mathematics for 3D Game Programming and Computer Graphics,你可以到这个页面去下载电子版:http://www.opengpu.org/forum.php?mod=viewthread&tid=5715&extra=page%3D1

     

    程序执行后的界面为:

线框模式界面为:

完整的代码请参考:

工程文件myTutorialD3D11_14

代码下载:

http://files.cnblogs.com/mikewolf2002/myTutorialD3D11.zip

时间: 2024-09-03 14:34:27

Directx11教程(20) 一个简单的水面的相关文章

《JavaScript和jQuery实战手册(原书第2版)》——3.5节教程:一个简单测验

3.5 教程:一个简单测验是时候把本章学习的内容组合到一起来创建一个完整的程序了.在这个教程中,我们将创建一个简单测验系统,它提出问题并评估参加测验者的表现.首先,本节将看看可能解决这个问题的一些方式,并且讨论编程的高效技巧.第一步总是搞清楚程序要做什么.下面是我们希望程序完成的一些事情:询问问题.如果我们想要测验一个人,需要一种方式向他提出问题.此时,我们知道从Web页面获取反馈的一种简单方法:prompt()命令.此外,我们需要一个问题列表,既然数组可以很好地用来存储信息列表,那么我们将使用

ASP进阶教程Ⅱ:一个简单的留言簿

  从本章开始我们将由一个简单的,利用文件储存访问留言的留言簿程序进入我们的教程.编写这样一个留言簿,我们大致可以从以下三个步骤来完成. 步骤一:先设计一个留言表单的网页(如:guestbook1.asp,这不用我在这儿说教了吧?).见下图:  步骤二:在设计好留言表单后,我们开始进行编写处理留言的ASP程序. 我们要编写处理留言的ASP程序,最重要的问题是如何实现存取留言.而在ASP程序中,要存取文件,我们必须建立FileSystemObject对象(该对象主要用于读取Unicode或ASCI

PySide教程:一个简单的点击按钮示例

在这篇文章里,我们将为你展示如何使用PySide使用信号.槽机制.基本来说,这是Qt提供给你的允许一个图形控件与其他图形控件或者python代码进行通讯的特性. 我们将要创建一个应用,你点击应用中的按钮后将在Python终端里显示"Hello World"字样. 下面让我们引入必要的Qt类以及python sys类. import sysfrom PySide.QtCore import *from PySide.QtGui import * 同时,创建一个python函数,只是用来向

PySide教程:一个简单的点击“.NET研究”按钮示例

在这篇文章里,我们将为你展示如何使用PySide使用信号.槽机制.基本来说,这是Qt提供给你的允许一个图形控件与其他图形控件或者python代码进行通讯的特性. 我们将要创建一个应用,你点击应用中的按钮后将在Python终端里显示"Hello World"字样. 下面让我们引入必要的Qt类以及python sys类. import sysfrom PySide.QtCore import *from PySide.QtGui import * 同时,创建一个python函数,只是用来向

Directx11教程(3) 一个最基本D3D应用程序(1)

      在前一篇教程程序代码的基础上,这次我们将增加2个类: InputClass,键盘处理的代码将放在这个类里面,GraphicsClass类,D3D渲染的代码放在这个类里,这两个类都是SystemClass类的成员变量,SystemClass类中会调用这2个类实例的初始化.渲染以及shutdown函数.    增加这个两个类后,应用的程序的框架如下:     System Class类有点小变动,增加了两个成员变量m_Input,m_Graphics,分别处理输入和渲染的操作. Syst

Directx11教程(8) 一个新的camera类

     本章我们将替换掉CameraClass类,实现一个稍微靠谱点的摄像机类.并通过Q,W,E,A,S,D,Z,X,C等按键实现摄像机的控制.      该类的主要功能就是根据指定的摄像机位置,up方向以及lookat方向,得到最终的视图矩阵,所谓视图矩阵就是把世界坐标系的顶点位置转化到视点(或者说摄像机)空间的矩阵.该类可以实现两种模式的摄像机操作,一类是AIRCRAFT摄像机,允许摄像机在空间自由运动,具有6个自由度.另一种是LANDOBJECT摄像机,只允许沿着某些特定的轴运动.   

Directx11教程(4) 一个最基本D3D应用程序(2)

接着上篇教程的代码,本篇加入基本的D3D代码,实现一个完整的D3D11程序框架. 我们增加一个新类D3DClass, 用来处理3D渲染功能.增加该类后,程序的框架如下图:     GraphicsClass.h代码改变如下, 主要是增加了一个D3DClass类成员变量,在Render函数中,将会调用D3DClass的相应Render函数,比如BeginScene.EndScene,BeginScene主要是清除framebuffer,设置渲染背景颜色,而EndScene则是把交换前后缓冲,使当前

2. 一个简单的Servlet--产生存文本

servlet Servlet 教程 2. 一个简单的Servlet--产生存文本     下面是一个产生存文本的简单servlet的实例. 2.1 HelloWorld.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest reque

Directx11教程(5) 画一个简单的三角形(1)

      在本篇教程中,我们将通过D3D11画一个简单的三角形.在D3D11中,GPU的渲染主要通过shader来操作(当然还有一些操作是由GPU固定管线完成,比如光栅化操作),最常用的shader操作是顶点shader(vertex shader)和像素shader(pixel shader).其实shader就是在GPU中执行的代码,这些代码被driver编译成硬件依赖的机器码,最终被GPU中shader pipe执行,从而完成3D渲染.D3D11中shader是用一种类C的语言HLSL编