整篇文章中对于directx11的知识的介绍并不多,我也不知道怎么介绍,也应该说对于directx,它有它自己的部分,比如设备(device),设备上下文(devicecontext),顶点缓存,索引缓存之类,也有图形学的部分比如世界矩阵,观察矩阵,投影矩阵,三角形渲染,光照,混合。要将这里涉及的api的功能,参数,对象一一说明,非常难。要将图形学里世界矩阵,观察矩阵,投影矩阵的推理,为什么选择渲染三角形而不是渲染四边形五边形这些一一明说,更不易(这个内容是我自己根据《3d游戏大师编程技巧》然后软件方式实现了一个3d渲染器才理解的)。另外,我自己也有好多不懂的东西,比如特效文件涉及的高级着色语言的编写,我感到很困难。所以,如果说本文对于directx11的介绍不够,还请大家多多见谅。网络上其实有很多对于directx的介绍和关于3d空间图形转换的介绍,大家如果觉得有疑问的完全可以去看他们的文章。

  但是这篇文章的C++架构我觉得挺好的,虽然没有用到C++的很多高级特性,但是明显能看到,使用C++让整个程序的编写变得简单很多,这里很好的体现了面向对象编程的好处。它让我们感觉到好像真的是有一个世界空间,里面有各种模型与粒子,还有一个相机(或者说是我们的眼睛),我想要添加一个模型就new一个modelclass,想添加一堆粒子就new一个particleSysclass。不过我依然还没进入C++编程的殿堂,我觉的要想真正学会C++编程,就必须有非常好的架构观。将一个需求剥皮拆骨,一一实现,再将它重新组装起来。如果要用到C++的高级特性,就更需要有一个非常好的架构观,将数据通用的函数用模板实现,在很相像又有不同的东西的实现上用继承和派生,在需要灵活使用内存空间的地方使用容器。什么时候能使用C++的这些细节特性?当然是有需求的时候,需求合适的时候。所以,多多编程,努力工作吧。

  成果:

  •   3d相册demo

      http://v.youku.com/v_show/id_XMTYyMTkzODYzNg==.html

  •   编写过程中的截图,粒子系统很多东西没做好所以并不美观

  将例子大小设置成0.5以后(更丑了,alpha通道玩不转)

不绘制粒子的,并改变相机角度。这里是两张图片,是因为模型就是图片,如果将模型文件修改一下,渲染效果就会不一样了。

C++小项目:directx11图形程序(九):总结的更多相关文章

  1. C++小项目:directx11图形程序(一):主框架

    最近在学习DIRECTX11,在学习过程中编写了一个程序,到现在发现这个程序也有几行代码了,结构还算整齐,就想把这个程序分享出来,其中涉及到了C++程序的架构,windows窗口程序编写,和Direc ...

  2. C++小项目:directx11图形程序(四):d3dclass

    主菜终于来了.这个d3dclass主要做的工作是dx11图形程序的初始化工作,它将创建显示表面交换链,d3d设备,d3d设备上下文,渲染目标表面,深度模板缓存:设置视口,生成投影矩阵. D3D设备:可 ...

  3. C++小项目:directx11图形程序(三):graphicsclass

    这是框架的第三层graphicsclass,这个类才真正可以说是整个程序的框架,因为它组织了后面所有的成员. 代码: graphicsclass.h #pragma once #include< ...

  4. C++小项目:directx11图形程序(八):particleSysclass

    粒子系统类,粒子系统是游戏里细小元素的控制系统,虽然感觉上它对游戏的影响不大,但是其实有了它能给游戏增色不少.粒子系统控制着细小元素的生死,运动,纹理.对它的编写让我知道,游戏里的这一片从天空飘落的雪 ...

  5. C++小项目:directx11图形程序(七):modelclass

    模型类是世界空间中的表示物体的类,那么他的所做的事就是加载模型,移动模型,渲染模型 modelclass.h #pragma once #include <d3d11.h> #includ ...

  6. C++小项目:directx11图形程序(二):systemclass

    先上代码: systemclass.h #pragma once #include"graphicsclass.h" const bool FULLSCREEN = true; c ...

  7. C++小项目:directx11图形程序(六):cameraclass

    cameraclass是一个相机类,它的作用是生成非常重要的观察矩阵.本小节涉及到一点数学知识,相对前面需要只是填充,调用,算是比较有趣的吧. cameraclass.h #pragma once # ...

  8. C++小项目:directx11图形程序(五):shadersclass

    这个类是用来创建着色器并设置输入布局的. 这个类比较特殊,它创建的着色器与Effect文件有关,effect文件是用高级着色语言(hlsl)编写的. shadersclass.h #pragma on ...

  9. Android小项目之七 应用程序的更新安装

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

随机推荐

  1. ubuntu 配置 jdk的一些常见问题

    首先下好压缩包.我用的是tar.gz 然后在/usr下解压,用mv或rename修改下文件夹名字,省得名字太长,然后再配置环境变量. so easy. 然而,  接下来你肯定会用 source /et ...

  2. centos升级glibc(升级到2.14版)

    1.下载源码包 到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.xz 2.解压 tar glibc-2.14.tar.gz 3.创建build目录 cd ...

  3. JFinal 国际化

    要支持国际化,需要在容器初始化的时候配置一个处理国际化的全局拦截器.比如可以使用 com.jfinal.i18n.I18nInterceptor 配置拦截器: public class MppConf ...

  4. Cocos2d-x 核心概念 - Node(节点)与Node层级架构

    Cocos2d-x采用层级结构管理场景 层 精灵 等节点(Node)对象 一个场景包含了多个层,一个层又包含多个对象 层级结构中的节点(Node)可以是场景,精灵等任何对象 节点的层级结构 Scene ...

  5. 解决 java 使用ssl过程中出现"PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"

    今天,封装HttpClient使用ssl时报一下错误: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorExc ...

  6. slideDoor(学习某编程网站的,仅作记录和学习)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 去繁从简--简化Message和Signal设置

    以往的版本中如果添加了消息或者信号类型的事件需要先在流程属性(设置流程ID的界面)中添加Message和Signal,之后再选择对应的事件在属性中的下拉框中选择已经定义的Message或Signal. ...

  8. 工作中最常用的Excel函数公式大全

    电脑那些事儿2016-05-18 22:23:02微软 公式 工作阅读(22574)评论(1) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 Wo ...

  9. 解决jquery操作checkbox全选全不选无法勾选问题

    最近在学习中使用jquery操作checkbox,使用下面方法进行全选.反选:$("input[name='checkbox']").attr("checked" ...

  10. 加速编码的 JavaScript 库和工具

    JavaScript库是 一个提前写好的JavaScript文件库,它可以很容易的开发基于JavaScript的应用,特别是AJAX和一些其它的以web为中心的技术.运用JavaScript最基本的方 ...