说说本人学习DirectX之路_如何学习dx-程序员宅基地

技术标签: DIRECTX  DXUT  directx  

笔者一直对做游戏颇有兴趣,一直在尝试学习一套可以做游戏的工具链,之前的选择是 DirectX + Cpp + VS2012 + 3dmax,声音暂且没有涉及。

那么选择 DirectX 的原因是觉得微软实力摆在那儿,而且更新的也比较多,尤其是 DX9 到 DX11,看得到还是有较多的提升的,而且可以看到近几年的游戏质量,但从画面来讲,真心不错。用 DXUT 的目的也就是说能减少工作量,尽快的投入到游戏最核心的部分,而不是一直停留在画面的方面。然而 DirectX / DXUT 用起来并没有想象中那么方便:

  1. 在 DX9 到 DX11 以后,在示例中, Mesh 的导入(.X文件)常常还是使用 DX9 进行的(笔者使用的 SDK 版本为 2010.2 版本),绘制的时候支持 DX9 / DX11 那么,你需要不停的去查看 DX9 和 DX11 的对应部分,还需要区分和维护两个部分的代码,使得整个学习和实践的过程很慢,而且经常把两个部分搞混
  2. DX9到DX10/DX11变化相当的大,不光是架构来看,从代码也可以看出处理流程,DX10麻烦不少(当然,你熟悉以后可以自己写些东西把这个简化掉)
  3. DX11 的 Mesh 不支持 .X文件,而采用 .sdkmesh 文件,虽然 DXUT 中提供了很方便的导入 API,但是 SDK 中提供的 MeshConvert.exe 工具并不能将我从 3dmax 中导出的 .obj 文件正常转换为 .sdkmesh,何况 .obj根本不支持动画
  4. 我一度去了解了一下 .fbx 文件的解析(因为最终希望导入动画,所以 .obj 是不够的),结果,又碰上了 .fbx 文件曾经支持的接口现在不开放了,所以自己解析的路子也没了
  5. 那么我退而求其次,使用低版本的 DX9 + .X 文件导入,结果发现采用 HLSL 的方式来实现动画时,需要在 Shader 中添加动画部分的代码,这就与我一些对于游戏的整体实现的理解有一些冲突,想要直接从程序里完成动画的操作,可能还需要一些 Shader的辅助,无疑又是给我提高了一个难度
所以,在最终的纠结和权衡中,我做了退步,考虑先使用 Unity 引擎来完成一些小的 Demo,希望能够脱离一直在门口晃悠的现状。
最后,留下一点我学习 DXUT 的经验吧:
  1. 首先你得熟悉一下 DirectX 基础,了解一些 DirectX 的工作流程,大概知道 DXUT 空项目中各个接口函数是干什么的,什么时候调用,对后面添加自己的代码还是很有帮助的。
  2. 然后,就是要多多学习 SDK 中的例程,不要贪多,一步一步来,每次查看的工程比上次的工程多一点操作(比如上次是绘制Mesh,这次是绘制Mesh加上灯光),那么你就能明确的知道新的操作需要加入的代码有哪些,怎样写,它有什么作用。
  3. 另外,建议不要仅仅限制于例程。建议看每个例程的时候,自己写一个类似的程序(对你没看错,是“类似的”),因为当你做了改变,你就能更加的明确某一个操作或者某一个 API 起到什么作用,我们改变它能得到什么,那么在以后进行设计实现时,你就能物尽其用了。

经验不多,还望大家自己拿捏参考。不过,如果你的项目人数足够的话,我还是希望有人能去钻研下底层的东西,看看国外的游戏引擎的发展,真是觉得国内还得加把劲。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/davied9/article/details/51894649

智能推荐

类的构造函数、析构函数、拷贝构造函数与赋值函数-程序员宅基地

文章浏览阅读1.1k次。类的构造函数、析构函数、拷贝构造函数与赋值函数 构造函数、析构函数与赋值函数是每个类最基本的函数。它们太普通以致让人容易麻痹大意,其实这些貌似简单的函数就象没有顶盖的下水道那样危险。每个类只有一个析构函数和一个赋值函数,但可以有多个构造函数(包含一个拷贝构造函数,其它的称为普通构造函数)。对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A产生四个缺省的函数

HTTPS 证书校验-程序员宅基地

文章浏览阅读534次。最近为了满足苹果的 https 要求, 经过努力终于写出了方法验证 SSL 证书是否满足 ATS 要求nscurl --ats-diagnostics --verbosehttps://你的域名PASS 符合要求输出满足 ATS 的证书openssl s_client -connect 你的域名:443</dev/null 2>/dev/null | openssl x509 -outform DER > https.cer1. 针对 AFNetWorking ..

详解android:scaleType属性(转)_android type转-程序员宅基地

文章浏览阅读579次。android:scaleType是控制图片如何resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别:CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示CENTER_CROP / centerCrop 按_android type转

有什么适合大一计算机专业学生免费的刷题网站?-程序员宅基地

文章浏览阅读1.3k次,点赞6次,收藏55次。我打算按照菜鸡-初级-进阶-大神的顺序给大家推荐刷题网站,通通可以白嫖,大家可以根据自己的需求选取合适的学♂习网站噢,绝对不亏! 菜菜子刷题网站 对于大一计算机专业的学生来说,怕的不是没有刷题网站,而是刷不通(废话,人家连专业课都没学,你让人家码啥?)。所以要从零开始刷题的话,我先推荐这几个小白也能刷的网站或题集: 核心目的:找到coding的感觉,规范代码写法。 ①Programming by...

电阻、电容和电感的选型及作用_电容不同类型的 电阻 电感 电容 详解-程序员宅基地

文章浏览阅读1.4k次。介绍电阻,电容,电感等常用器件的作用,分类即选型时考虑的参数_电容不同类型的 电阻 电感 电容 详解

解决airserver在Windows下安装失败的问题-程序员宅基地

文章浏览阅读739次。airserver 可以将iphone 实时投影到mac 和 pc。在mac上安装非常简单。但是在Windows上安装时会有很多问题。之前我电脑安装很快就完成了(因为我之前已经在不知情的前提先事先装过windows 的一个组件和 itunes),但是同事电脑一直没法安装,始终困扰着我。今天解决了,记录一下。问题:AirServer 在windows 系统下安装到第二步时,无法"next"。..._windsos server 2016 datacenter 安装avira没反应的问题

随便推点

目前鸿蒙系统手机有哪些,鸿蒙系统现在是什么版本?那些手机能用?-程序员宅基地

文章浏览阅读2.2k次。9月10日消息,今天,华为开发者大会2020在东莞松山湖开幕。华为消费者业务CEO余承东做了主题演讲。余承东表示,今年12月份将面向开发者提供鸿蒙2.0的beta版本,这意味着明年华为智能手机将全面升级支持鸿蒙2.0。鸿蒙2.0带来了分布式软总线、分布式数据管理、分布式安全等分布式能力的全面升级,同时发布了自适应的UX框架。余承东表示今年9月份将面向开发者提供大屏、手表、车机的鸿蒙OS2.0的be..._鸿蒙系统有几个版本

linux下NVIDIA Jetson TX2 aarch64架构下安装tensorflow以及出现“Illegal instruction(cpre dumped)”非法指令(核心已转移)的解决方法_非法指令 (核心已转储)-程序员宅基地

文章浏览阅读1.7k次。1、查看架构,我的这个是aarch2、github上有别人编译好的TensorFlow,https://github.com/lhelontra/tensorflow-on-arm/releases下载,我下载的是tensorflow2.3的whl3、安装网络正常的话,就安装完成了_非法指令 (核心已转储)

linux 安装zh.utf 8,debian下安装locale并设置zh_CN.UTF-8-程序员宅基地

文章浏览阅读7.1k次。装了mldonkey,但是下载的文件名存在乱码,看来需要装中文语言支持了。在Debian中安装locales的方法如下:通过apt-get install locales命令安装locales包安装完成locales包后,系统会自动进行locale配置,你只要选择所需的locale,可以多选。最后指定一个系统默认的locale。这样系统就会帮你自动生成相应的locale和配置好系统的locale。..._apt-get install locales

Subversion Edge服务器配置_subversionedge 端口修改-程序员宅基地

文章浏览阅读7.5k次。整体配置方式参考:http://tsleoou.diandian.com/post/2011-07-21/3079158需要注意的是配置中的几个问题:1、/etc/sudoer 文件的修改 我是sz下来,修改,sz到upload目录,然后cp到 /etc目录下,覆盖,否则没有权限修改2、CSVN Console time-out waiting for http://_subversionedge 端口修改

【vulhub】Weblogic任意文件上传漏洞(CVE-2018-2894)_vulhub cve-2018-2894-程序员宅基地

文章浏览阅读2.2k次。前言Web Service Test Page 在 ‘生产模式’ 下默认不开启,所以该漏洞有一定限制。两个页面分别为/ws_utc/begin.do、/ws_utc/config.do。受影响的版本weblogic 10.3.6.0、weblogic 12.1.3.0、weblogic 12.2.1.2、weblogic 12.2.1.3。利用条件:1、需要知道部署应用的web目录2、ws_utc/config.do在开发模式下无需认证,在生产模式下需要认证。一、启动靶机docker-com_vulhub cve-2018-2894

Ubuntu下apt-get安装与pip安装的区别_ubuntu apt-get pip 区别-程序员宅基地

文章浏览阅读681次。1. pip与apt-get的区别在哪儿呢?pip用来安装来自PyPI的Python所有的依赖包,并且可以选择安装任何在PyPI上已上传的先前版本的依赖包; apt-get可以用来安装软件、更新源、也可以用来更新自Ubuntu的典型依赖包,典型安装即意味着它只是安装(最新发布的,或最近一个的)单一版本,并且我们不能决定我们要安装的依赖包的版本或选择它之前的版本。2. 什么时候该_ubuntu apt-get pip 区别