游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: GhostCheng

如何使用矩阵变换,来改变纹理坐标?

[复制链接]

8

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2007-7-9 20:34:00 | 显示全部楼层

Re: 如何使用矩阵变换,来改变纹理坐标?

DX:还要启用纹理坐标变换
m_device->SetTextureStageState(0,D3DTSS_TEXTURETRANSFORMFLAGS,D3DTTFF_COUNT2);
PS:
因为纹理变换是3*3的所以:
纹理变换矩阵缩放,旋转可以用D3DX的函数
但平移得话得自己写,如下:
D3DXMatrixIdentity(&texMoveMatrix);
        texMoveMatrix._31=u;
        texMoveMatrix._32=v;
还不懂就看这:

http://www.gesoftfactory.com/developer/Textures.htm

23

主题

63

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2007-7-9 22:23:00 | 显示全部楼层

Re: 如何使用矩阵变换,来改变纹理坐标?

如果你想使用固定功能的渲染管线来实现纹理坐标变换,代码大概是这样:

D3DXMATRIX mat;
D3DXMatrixTransformation2D(&mat, ...);
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
SetTransform(D3DTS_TEXTURE0, &mat);

在完事之后,记着:
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE);
[em19]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 22:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表