zoukankan      html  css  js  c++  java
  • 来自豆瓣的一个走过弯路的人(转)

     

    首先得声明我这篇文章只有很少的篇幅介绍龙书,其实我是想写点东西给那些看完龙书的人。
    这是我接触3D图形编程的第一本书,接触3d图形编程前,我看的是《Windows 游戏编程大师技巧》,只看了前几章,当时我急着想去学3D的酷玩意儿,立刻就没耐心看GDI,DirectDraw。转投Direct3D门下,入门书当然是这本龙书了。对我来说龙书最棒的地方在于,它除了开始的数学基础章节外,每一章都能详细地引导读者去实现一个简单的3D特性,从画三角形到摄像机,到简单的粒子系统,地形,甚至到shader。Luna无疑是睿智而狡猾的,他知道初学者往往耐心不够,所以他总是适时地丢出个胡萝卜,让读者保持着继续的动力。这一点是我在《Windows 游戏编程大师技巧》没看到的。(见鬼,谁爱去学画线那点破玩意...这里完全是个人情感,我没看完后者,所以没资格评价)
    但是Luna忽视了一点,就是学完了龙书该做什么?他或许没想到有很多投身于游戏编程的孩子都是像我这样,眼高手低而且懒于探索,爱看现成内容的。起初的他们编程基础不扎实(1年编程经验),完全不了解图形学(就龙书那点,而且多半只是照葫芦画了个瓢,还是不懂原理)。于是这些孩子后来的日子就苦了。
    由于他缺乏埋头苦干的品质,于是他们只能上网寻找高人指点如何走下面的路,接着他苦苦寻找该如何理解和实现更高深的内容,去看DirectX Sampler里晦涩的代码,虽然很多知识对当时缺乏实际代码经验的他实在有点难,在这样茫茫然然浪费了许多时光之后,他找到一本还可以的英文书,里面虽然内容不深,但是一步一步教着去实现了简单的Demo,里面包含了蹩脚的封装,难堪的场景管理,但对他来说还是可以够到的,于是他终于东拼西凑地写出了第一个属于自己的Demo。他看到了自己的不足,但还不知道如何改进,他觉得这个学习之旅越来越难,懒惰催促着他该放弃了。但他的内心不愿放弃这个童年的梦想,于是他甚至逼迫自己翻译了另一本英文书籍,他又能看懂更多了。或许是冥冥中的必然,他看到了Ogre,在经历的那么多晦涩的代码后,学习Ogre已经不再是那么难了,他在同学的帮助下熟悉了部分Ogre,写了更多的代码,看了更多的代码。终于,他发现曾经如同天书的RTR,现在闪烁着金色的光芒,而他发现自己图形的基础实在太差了,而且对图形引擎的细节还是一知半解(游戏引擎更别说了)。于是他便开始阅读ogre的源码,并纳为己用......
    我不知道还有没有像我这样的笨蛋,但现在回头想想,自己当初如果能有个人来指点一二,并且沉下心,多写代码,今天我能走的更远。下面就是推荐学习的路线:
    0.耐下性子,认真学习数据结构与算法,至少要学到图。这是我当年没有好好做而如今最后悔的步骤,推荐书无所谓,严蔚敏的也行,allen weiss的最好,但最重要的是不是光去理解,而是自己去实现,你会发现后者比前者难的多。
    1.DirectX的龙书,我推荐看清华大学翻译的这个,首先段菲翻译的的确很不错,有些地方译者还加了自己的话和推荐的书外阅读,虽然有些链接失效了,但这是原版没有的(准确的说是翁云兵先生翻译的版本里没有的,原文我没看过)。其次,处于尊重版权,我也推荐去买这本书,而不是下电子版,相信我,对于初学者来说,这本书在你学习3d编程的一两年内,你还是能在从中学到知识的。
    2.实现龙书,我不是说把他的例子抄一遍。这时候你需要做的是,把龙书的代码推掉,利用龙书的所有内容,重新自己写一个小的demo,可以就是一个小场景漫游,但是希望你开动想象力,多写点逻辑,多写点独特的非图形的东西,不要觉得这很难,其实随便想一个简单的东西都有够你写的,推荐看这篇文章,你会发现灵感有时候没那么难出现:http://www.gamelook.com.cn/?p=15451
    3.这个时候,如果上述步骤你都完成了,恭喜你,你已经不再是初级菜鸟了,首先,你需要去买RTR(Real-Time Rendering英文版 ,淘宝上影印80),然后,程序设计上我推荐买一本大话设计模式,把其中简单的模式看一下,看不懂的就别看(那说明你还没到那水平,或者说还没遇到过这个模式能解决的问题)。接着,推荐你阅读clayman大人很有名的一篇博客:http://www.cnblogs.com/clayman/archive/2009/05/17/1459001.html
    然后去选择一个方向去阅读文中推荐的书籍,我推荐是地形和动画,因为这两个方向的书我看过。。。《Real Time 3D Terrain Engines Using C++ And DX9》网上有我翻译的中文版,虽然代码的确需要花一定的时间去理解(作为demo,代码写的不错,可以算一个小的图形引擎了),不过场景管理还是图形里相当核心的一块,所以读还是有好处的,不过我的建议也是读完4到9章和附录就可以实际编码了。而后者《Character Animation With Direct3D》代码浅显易懂,而且人物动画绝对是当今次世代的一个大头,我虽然没有全看完,但还是相信这本书绝对很值得一读。读完后最后重构你之前写的demo吧,并且加入这两本书的特性。
    4 你将从菜鸟学院毕业了,现在的你对图形已经不再一窍不通,对程序结构也不再那么陌生。下面我终于要向你推荐Ogre了,你将很愉悦的略读一下《Pro OGRE 3D Programming》,(打工仔一帮人翻译了中文版),到此你当初写demo时的许多难题在这里或许能引擎共鸣,然后你将很轻松地阅读ogre的官网的初中级教程,如今的你手握一个文档详细,社区活跃的图形引擎,接着拿着他重新去写一个小游戏吧,要求还是一样,尽可能多地利用所学知识。
    是的,我还想写第5条,但我忍住了,因为曾经有个笨蛋经过或跳过了上述几个阶段后,学到了甚至更多的东西,最重要的是如今他不再需要有人来指点,便可以确定自己该走哪一条路,虽然他不一定看不到旅途的终点,但已然能够嘹望到前方的光明。所以我相信,你也能:)
    ps:希望大家有经济能力的还是购买正版书籍,亚马逊没那么麻烦,而且淘宝上其实有很多代购的。

  • 相关阅读:
    C#磁吸屏幕窗体类库
    准备
    我写的诗
    How to turn off a laptop keyboard
    How to tell which commit a tag points to in Git?
    Why should I care about lightweight vs. annotated tags?
    How to get rid of “would clobber existing tag”
    Facebook, Google and Twitter threaten to leave Hong Kong over privacy law changes
    The need for legislative reform on secrecy orders
    Can a foreign key be NULL and/or duplicate?
  • 原文地址:https://www.cnblogs.com/wonderKK/p/2267937.html
Copyright © 2011-2022 走看看