现在的位置: 首页 > 综合 > 正文

DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之6: Chap8: Drawing in Direct3D —- Part II

2019年11月14日 ⁄ 综合 ⁄ 共 963字 ⁄ 字号 评论关闭

    从这一章起,龙书第二版正式进入了shader部分了!利用HLSL语言编写各种shader的内容贯穿此书的大半部分,而且是最令人激动的部分了!用shader可以实现很多用非shader技术难以实现或者根本无法实现的效果!

    不过到这里我们只是对于HLSL语言入了个门而已,很多比较重要的东西暂时没有讲,而是会在后来需要用到的地方逐一讲述。这比较符合学习曲线,但是并不方便复习。推荐读者们做一个HLSL语言知识的汇总表;或者,如果足够有自信的话,有问题的话直接阅读SDK文档。

 

习题1部分:

 

    这部分要我们重写第7章的Cube Demo代码,不过采用的是shader方法。这个很简单,如果这个不会的话,那么还是好好看看书吧!

 

    附:第8章习题1答案下载地址:

点击打开链接

习题2部分:

 

    这道题很简单,让我们把TriGridDemo的线框颜色改成红色。这个只需要把transform.fx中float4 TransformPS() : COLOR的语句

    return float4(0.0f, 0.0f, 0.0f, 1.0f);

改成

    return float4(1.0f, 0.0f, 0.0f, 1.0f);

就行了。

 

习题3-5部分:

 

    习题3-5分别让我们利用D3DX内置的函数绘制一个圆锥、茶壶和圆环。这几道题都很trivial,如果分开来做的话;所以,为了增加挑战性,我便弄了一个“三合一”版本,再一次毕其功于一役!

    要切换不同的mesh,只要按数字键1-3就性了。这是该程序运行时的几个截图:

附:第8章习题3-5答案下载地址:

点击打开链接

 

    为了让这个程序更加有趣,我为每个mesh都设定了它自己的摄像机系统和视角变换、投影变换矩阵,这样,不管你对茶壶做了什么事情,当你返回圆锥的时候,圆锥还是原来的模样。

    这个程序的实现并不像看上去那么简单。我当初编写的时候遇到了一个神奇的问题,就是初始的时候可以见到图形,但是切换之后就不见图形了。这个问题困扰了我好几天,后来实在没办法了,只好和之前写的程序慢慢对比,发现原来是源文件的drawScene函数里

    HR(gd3dDevice->BeginScene());

语句后忘了写下面这个语句了:

    HR(mFX->SetTechnique(mhTech));

    唉,真是冤枉啊!

抱歉!评论已关闭.