纹理坐标处理

概述:

对于一些特殊的纹理应用需要对纹理坐标进行处理,主要包括纹理坐标自动生成和纹理坐标变换。

纹理坐标的来源:来自FVF  来自Direct3D

在纹理坐标到达光栅处理器之前,决定是否启用纹理坐标变换。

 

一、             纹理坐标自动生成

可以通过Direct3D渲染引擎自动生成纹理坐标,用于诸如环境映射等特殊的视觉效果。纹理坐标自动生成在Direct3D坐标变换和光照流水线中完成,执行速度更快。

Direct3D系统可以使用经过变换的空间顶点位置坐标、法线信息来生成纹理坐标。

纹理坐标自动生成主要是用于产生出一些特殊效果。

通过D3DTSS_TEXCOORDINDEX纹理阶段状态可控制Direct3D系统如何自动生成纹理坐标。坐标生成标志:

D3DTSS_TCI_PASSTHRU     使用顶点信息中的纹理坐标

D3DTSS_TCI_CAMERASPACENORMAL    以顶点在观察坐标系中的法线向量作为该纹理层的纹理坐标输出

D3DTSS_TCI_CAMERASPACEPOSITION   一顶点在观察坐标系中的顶点坐标作为该纹理层的纹理坐标输出

D3DTSS_TCI_REFLECTIONVECTOR 以顶点在观察坐标系中的反射向量作为该纹理层的纹理坐标输出,反射向量由顶点坐标和法线向量计算得出

D3DTSS_TCI_SPHEREMAP   输出球面反射的纹理坐标

 

pd3dDevice->SetTextureStageState(0,D3DTSS_TEXTURECOORDINDEX, D3DTSS_TCI_CAMERASPACENORMAL );

 

纹理阶段状态D3DTSS_TEXTURETRANSFORMFLAGS 用来控制纹理坐标生成的输出。

 

pd3dDevice->SetTextureStageState(0,D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 );

二、             纹理坐标变换

Direct3D提供了对生成的纹理坐标进行坐标变换的功能。可以指定一个4*4的纹理坐标变换矩阵,把他与生成的纹理坐标相乘,然后将变换之后的纹理坐标输出至Direct3D渲染流水线。

下面的代码将原来的纹理坐标平移(1.01.00.0

D3DXMATRIX mat;

D3DXMatrixIdentity(&mat);

mat.41 = 1.0f;

mat.42 = 1.0f;

mat.43 = 0.0f;

pd3dDevice->SetTransform( D3DTEXTURE0, mat);

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值