Direct-X学习笔记--纹理映射进阶

之前学习了纹理映射相关知识,但是仅仅是知道读取一个纹理贴图,然后在绘制之前设置一下纹理,但是并不知道纹理设置的一些具体细节,今天就来填坑啦!


一.四种纹理寻址方式

我们读取一个纹理图片,最好的情况是所需要的图片大小和图片本身的大小一致,但是事实往往不是这么美好。所以当纹理图片的大小和我们所绘制的模型大小不一致时,就需要通过不同的纹理寻址方式来解决这个问题。
通常,我们取的纹理坐标为(0.0f, 1.0f),这个纹理坐标刚好对应图片的大小。而现在,我们要把纹理坐标变大,即变成大于1的值,而大于1的部分就是下面我们要学习的纹理寻址方式管辖的范围啦。

四中纹理寻址方式分别为:
1)重复寻址模式(wrap texture address mode)
2)镜像纹理寻址模式(mirror texture address mode)
3)夹取寻址模式(clamp texture address mode)
4)边框颜色寻址模式(border color texture mode)
下面分别看一下四中寻址方式。

先来一张正常的纹理图片,我们绘制了一个正对摄像机的平面,平面共有四个点,设置为有一组纹理的灵活顶点格式:

然后我们修改一下之前玩过无数次的定点格式,把纹理坐标的最大值由1.0改为2.0:
//顶点数据
	vertex[0] = stVertex(-250.0f,   0.0f, 0.0f, 0.0f, 2.0f);
	vertex[1] = stVertex(-250.0f,   500.0f, 0.0f, 0.0f, 0.0f);
	vertex[2] = stVertex( 250.0f,   0.0f, 0.0f, 2.0f, 2.0f);
	vertex[3] = stVertex( 250.0f,   500.0f, 0.0f, 2.0f, 0.0f);
这样,一张图片就不能完整的覆盖住模型啦,我们的纹理寻址方式就要派上用场啦!

注意,寻址方式的设定在u,v两个方向是可以分别设定的!

关于设置,我们可以通过DX的一个API---SetSamplerState函数来设定。
第一个参数是纹理的层数,一共不是可以有8层纹理嘛,如果只用第一层的话,直接设置为0就好啦。
第二个参数为u,v方向,分别为D3DSAMP_ADDRESSU,或者D3DSAMP_ADDRESSV即可
第三个参数为纹理寻址方式,如下:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值