DirectX11编程12 红龙书第九章练习

环境:VS2017  语言:C++

 

附上工程的链接:https://github.com/anguangzhihen/Dx11

1.这边的程序都是以win64运行的;

2.如果没有找到Common脚本,请到工程/属性/VC++目录中添加包含目录 “../Common”;

3.如果没有找到libs,请到工程/属性/链接器添加附加库目录“../Common/libs”

4.所有的练习都在工程中,全局搜索“练习9”关键字就能找到,想要运行打开注释即可。

 

有任何错误,请大佬们指正。

 

1.设置混合状态使用的SampleMask为0xfffffffe,查看效果?

答:

 

我们没有用到多重采样,所以禁止掉第一位bit就是禁止了水颜色的输出。

 

2.实验不同Blend参数组合的效果?

答:

我这边就实现了一下叠加的效果:

// 叠加混合
transparentDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
transparentDesc.RenderTarget[0].DestBlend = D3D11_BLEND_ONE;
transparentDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;

 

 

3.使水先绘制,查看效果,并解释原因?

答:

 

很明显,被水遮住的像素点都看不到了。

 

先绘制透明物体,再绘制实体的时候,实体在透明物体后面就不知道该怎么绘制了。这边像素点被遮挡的原因应该是depth测试没有通过。如果通过depth测试的话,水就没了。

 

所以透明物体必须在实体之后绘制。

 

4.fogStart=10、fogRange=200,计算foggedColor?

答:

foggedColor我就不计算了,我就计算出s。

 

dist(p,E)=160,则s=0.75;

dist(p,E)=110,则s=0.5;

dist(p,E)=60,则s=0.25;

dist(p,E)=30,则s=0.1。

 

5.验证使用gAlphaClip=false禁用剪裁?

答:

这边我没有用到Effect框架,所以没有technique技术,这题就看看就好。

 

6.改变Blend Demo,使其在混合时不输出红色和绿色?

答:

transparentDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_BLUE | D3D11_COLOR_WRITE_ENABLE_ALPHA;

 

就是混合描述中的RenderTargetWriteMask变量的设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值