龙书D3D11章节习题答案(第八章)

本文介绍了通过Direct3D 11实现纹理技术的多个练习,包括修改Crate Demo以重现不同纹理模式、过滤选项的效果,使用DirectX Texture Tool创建具有不同mipmap级别的DDS文件,实现纹理混合以创建火球效果,以及在立方体每个面上动态旋转火球纹理。此外,还涉及到加载120帧火动画并逐帧播放,以及将纹理应用到Lit Skull Demo中的地面、柱子和球体上。
摘要由CSDN通过智能技术生成

以下答案仅供参考,有错欢迎留言。


Chapter 8 : Texturing


1. Experiment with the “Crate” demo by changing the texture coordinates and using different address mode combinations and filtering options. In particular, reproduce the images in Figures 8.7, 8.9, 8.10, 8.11, 8.12, and 8.13.


通过修改CrateDemo中的Box的uv纹理坐标和切换不同的address mode和filtering options来重新实现Figures 8.7, 8.9, 8.10, 8.11, 8.12, and 8.13的效果。


8.7: 是两张对比Magification情况下constant interpolating和linear interpolating的差异图,前者像素间过度没有后者平滑。当我们在Basic.fx中把SampleState结构体中的Fileter改完以后,会发现在拉远拉近镜头的时候,始终不能得到magnification的情况,这是因为我们之前设置的PerSpective Matrix的Y方向的视野夹角太大了,应修改为:

void CrateApp::OnResize()
{
	D3DApp::OnResize();

	XMMATRIX P = XMMatrixPerspectiveFovLH(0.01f*MathHelper::Pi, AspectRatio(), 1.0f, 1000.0f);
	XMStoreFloat4x4(&mProj, P);
}
MAG_POINT:        MAG_LINEAR:



8.9:  这里Filter设置和MAG无关,与MIN和MIP有关。

POINT:LINEAR:

ANISOTROPIC:


8.10,11,12,13: 

// 在类中添加关于Box纹理拉伸的成员变量
       	XMFLOAT4X4 mBoxTexScale;

// Init的时候赋值
	XMMATRIX boxTexScale = XMMatrixScaling(4.0f,4.0f,0.0f);
	XMStoreFloat4x4(&mBoxTexScale, boxTexScale);

// DrawScene的时候用Effects11设置到FX文件
Effects::BasicFX->SetTexTransform(XMLoadFloat4x4(&mBoxTexScale));</span>
Basic.fx:修改SampleState里的AddressU、AddressV即可,注意使用Border时需要指定BorderColor,格式是Float4的RGBA。

Wrap:      Mirror: 

Clamp:    Border:


AddressU和AddressV可以设置不同的Address Mode来达到混合效果:

比如AddressU: Wrap + Address: Border = ...etc...




2. Using the DirectX Texture Tool, we can manually specify each mipmap level (File->Open Onto This Surface). Creat

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值