C#实现3D三角形 顶点转换以及投影

1.向量基本类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _3DTransform
{
    class Vector4
    {
        public double x, y, z, w;

        public Vector4() { }

        public Vector4(double x, double y, double z, double w)
        {
            this.x = x;
            this.y = y;
            this.z = z;
            this.w = w;
        }

        public Vector4(Vector4 v)
        {
            this.x = v.x;
            this.y = v.y;
            this.z = v.z;
            this.w = v.w;
        }
    }
}

2.4X4阶矩阵运算类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _3DTransform
{
    class matrix4X4
    {
        public double[,] pts;

        public matrix4X4()
        {
            pts = new double[4, 4];
        }

        /// <summary>
        /// 访问器便于获取矩阵中的元素
        /// </summary>
        /// <param name="i"></param>
        /// <param name="j"></param>
        /// <returns></returns>
        public double this[int i, int j]
        {
            get
            {
                return pts[i - 1, j - 1];
            }
            set 
            {
                pts[i - 1, j - 1] = value;
            }
        }

        /// 
第 1 章 游戏开发和托管代码 .... 3 1.1 什么是.NET? ...... 3 1.2 什么是托管代码 ...... 5 1.3 使用 Microsoft Visual Studio .NET 2003 IDE 编写代码 ...... 5 1.3.1 C#代码 ..... 6 1.3.2 VB .NET 代码 ..... 8 1.4 在命令行中编译.NET 代码 ...... 9 1.5 游戏开发简述 ...... 10 1.6 开发人员 ...... 10 1.7 游戏开发过程 ...... 11 1.8 工具 ...... 12 1.9 小结 ...... 16 第 II 部分 图形和游戏 1 的介绍 第 2 章 策划第一个游戏 .... 19 2.1 提出游戏构想 ...... 19 2.2 理解一个 3D 游戏的需求 ...... 21 2.3 游戏规范 ...... 24 2.4 小结 ...... 26 第 3 章 理解示例框架 .... 27 3.1 创建项目 ...... 27 3.2 枚举所有设备选项 ...... 32 3.3 小结 ...... 39 第 4 章 在屏幕上显示 .... 40 4.1 创建设备 ...... 40 4.2 开始绘图 ...... 47 4.3 加载并绘制网格 ...... 48 4.4 在场景中添加照相机 ...... 51 4.5 小结 ...... 54 第 5 章 完成代码 .... 55 5.1 理解高分辨率计时器 ...... 55 5.2 处理丢失的设备 ...... 60 5.3 添加帧速率输出 ...... 63 5.4 设计 UI 界面 ...... 65 5.5 设计按钮 ...... 72 5.6 小结 ...... 75 第 6 章 实现用户界面 .... 76 6.1 设计主菜单 ...... 76 6.2 插入到游戏引擎中 ...... 81 6.3 选择人物(Loopy) .. 84 6.4 利用新界面更新游戏引擎 ...... 91 6.5 小结 ...... 95 第 7 章 实现玩家和块 .... 96 7.1 编写 Player 对象 ...... 96 7.2 设计块 ...... 104 7.3 小结 ...... 110 第 8 章 实现级别对象 .... 111 8.1 实现级别 ...... 111 8.2 控制玩家的移动 ...... 116 8.3 处理级别的更新 ...... 119 8.4 小结 ...... 123 第 9 章 综合应用 .... 124 9.1 包含玩家 ...... 124 9.2 挂钩级别 ...... 128 9.3 实现退出界面 ...... 132 9.4 结束工作 ...... 135 9.5 小结 ...... 140 第 III 部分 基本的数学规则 第 10 章 3D 数学快速入门 .... 145 10.1 2D 与 3D .... 145 10.2 使用 3D 点 ...... 147 10.3 操作 3D 对象 ...... 148 10.3.1 平移(移动)对象 ..... 149 10.3.2 缩放 ..... 149 10.3.3 旋转 ..... 150 10.3.4 坐标系 ..... 150 10.4 数学结构 ...... 151 10.5 向量 ...... 151 10.6 矩阵 ...... 154 10.7 小结 ...... 157 第 IV 部分 间接图形、对等网、游戏 2 第 11 章 开始创建游戏 .... 161 11.1 Tankers—— 下一个游戏构想 ...... 161 11.2 创建 Tankers 项目 ...... 163 11.3 项目的图形绘制 ...... 169 11.4 为纹理构建对象池 ...... 171 11.5 小结 ...... 173 第 12 章 开发更先进的用户界面 .... 174 12.1 使用 Blockers 的基类(Base 类) .. 174 12.2 添加新的基类 ...... 179 12.3 实现主界面 ...... 182 12.4 利用用户界面绘制 3D 模型 ...... 189 12.5 小结 ...... 193 第 13 章 绘制真实的坦克 .... 194 13.1 理解网格层次结构 ...... 194 13.2 加载坦克层次结构 ...... 197 13.3 绘制网格层次 ...... 199 13.4 操作坦克 ...... 201 13.5 坦克的属性 ...... 204 13.6 创建照相机类 ...... 207 13.7 小结 ...... 210 第 14 章 天空?级别?玩家! .... 211 14.1 没有天空的世界将是黑色的世界 ...... 211 14.2 有了一个天空,但坦克不能驱动到那里 ...... 214 14.3 控制坦克 ...... 216 14.4 IMoveableObject 接口 ...... 225 14.5 基本碰撞检测 ...... 231 14.6 小结 ...... 234 第 15 章 准备,瞄准,开火! .... 235 15.1 实现 Ammunition 类 ...... 235 15.2 Bullets 集合 ...... 242 15.3 完成玩家 ...... 243 15.4 添加声音 ...... 245 15.5 小结 ...... 248 第 16 章 避免单人游戏的枯燥 .... 249 16.1 使用 DirectPlay ... 249 16.2 创建会话 ...... 255 16.3 加入会话 ...... 257 16.4 事件处理程序 ...... 258 16.5 发送及接收数据 ...... 260 16.6 小结 ...... 265 第 17 章 完成 Tankers 游戏 .... 266 17.1 插入到游戏引擎中 ...... 266 17.2 绘制游戏 ...... 272 17.3 小结 ...... 275 第 V 部分 高级绘图、客户/服务器网络和游戏 3 第 18 章 添加特殊效果 .... 279 18.1 实现基本粒子系统 ...... 279 18.2 绘制粒子系统 ...... 287 18.3 将各部分连接到一起 ...... 290 18.4 小结 ...... 292 第 19 章 构建自己的游戏 .... 293 19.1 阐明思想 ...... 293 19.2 创建自己的项目 ...... 294 19.3 设计用户界面 ...... 300 19.4 小结 ...... 305 第 20 章 可编程流水线 .... 306 20.1 定义可编程流水线 ...... 306 20.2 使用 HLSL ... 307 20.3 编写 Vertex Shader .. 309 20.4 使用着色增加逼真度 ...... 314 20.5 添加 Pixel shader .. 315 20.6 小结 ...... 317 第 21 章 控制细节的级别 .... 318 21.1 简化网格 ...... 318 21.2 使用简化的网格 ...... 322 21.3 使用渐进网格控制细节的级别 ...... 323 21.4 小结 ...... 324 第 22 章 使用绘图目标创建特效 .... 325 22.1 绘制跑道和多辆卡丁车 ...... 325 22.2 创建绘图目标和表面 ...... 331 22.3 将场景绘制到绘图目标 ...... 333 22.4 演示后视镜 ...... 334 22.5 小结 ...... 335 第 23 章 理解高级渲染语言 .... 336 23.1 理解老的 shader 模型的限制 ...... 336 23.2 添加卡丁车镜面高亮 ...... 337 23.3 逐 pixel 镜面高亮 ...... 340 23.4 小结 ...... 343 第 24 章 关于性能的注意事项 .... 344 24.1 事件模型和 Managed DirectX .... 344 24.2 生成本机程序集 ...... 345 24.3 Boxing 恶梦 ...... 346 24.4 Managed DirectX 的速度 ...... 348 24.5 理解方法的开销 ...... 349 24.6 小结 ...... 350 第 VI 部分 附 录 附录 A 开发级别创建器 .... 353
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值