游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2610|回复: 6

关于三角形面顶点坐标的Y轴与纹理坐标的U轴方向相反

[复制链接]

2

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2009-7-2 17:33:00 | 显示全部楼层 |阅读模式
我们知道,
三角形面顶点坐标系的Y轴方向为上,而纹理坐标系的U轴向下,
这在给顶点设置纹理坐标(U,V)时带来思维上的不方便,不小心就会把纹理设成倒立了。

是否有办法在IDirect3DTexture9加载后把图像先上下倒转一下,就不用担心纹理倒立了。

如何使IDirect3DTexture9上下倒转一下呢?

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-7-2 19:40:00 | 显示全部楼层

Re:关于三角形面顶点坐标的Y轴与纹理坐标的U轴方向相

谁规定Y向上、U向下了?

它们方向任意的,UV只是另外还要对应到纹理表面而已,而纹理坐标是以左上角为原点的。

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2009-7-2 20:52:00 | 显示全部楼层

Re:关于三角形面顶点坐标的Y轴与纹理坐标的U轴方向相

自己写个转换矩阵即可。

2

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
 楼主| 发表于 2009-7-3 11:34:00 | 显示全部楼层

Re: Re:关于三角形面顶点坐标的Y轴与纹理坐标的U轴方

lidudu: Re:关于三角形面顶点坐标的Y轴与纹理坐标的U轴方向相反的问题

谁规定Y向上、U向下了?

它们方向任意的,UV只是另外还要对应到纹理表面而已,而纹理坐标是以左上角为原点的。


可能是我没说清楚。
假设一个连长为1的正文形:A(0,0),B(1,0),C(1,1),D(0,1)
如果相应的纹理坐标直接用:A(0,0),B(1,0),C(1,1),D(0,1)
那么显示出来的是纹理图片是上下颠倒的。

我的想法是,能否先把纹理图片先上下颠倒一下,
再直接用纹理坐标A(0,0),B(1,0),C(1,1),D(0,1),显示出来的就不会上下颠倒了。

当然,如果不用这种便于思维的方式,
我们可以用常规办法:计算纹理坐标时,就有意把它上下颠倒一下(我是觉得这样不便于思维)。

另外,回另一位朋友,这和转换矩阵没有关系吧,因为我不是要简单的显示一幅完整纹理图片。

39

主题

170

帖子

170

积分

注册会员

Rank: 2

积分
170
发表于 2009-7-3 11:41:00 | 显示全部楼层

Re: 关于三角形面顶点坐标的Y轴与纹理坐标的U轴方向相

乘上个纹理矩阵

在shader里把纹理坐标mul它

2

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
 楼主| 发表于 2009-7-3 13:53:00 | 显示全部楼层

Re:关于三角形面顶点坐标的Y轴与纹理坐标的U轴方向相

问题终于解决了!
不知道是我的理解水平有限,还是知识点掌握不够,大家的回复让我看的一头雾水。
看来是关键代码胜过大段理论文字描述,关键代码如下:

D3DXMATRIX mat;
D3DXMatrixIdentity(&mat);
D3DXMatrixRotationX(&mat, D3DX_PI);
m_pDevice->SetTransform(D3DTS_TEXTURE0, &mat);
m_pDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);

感谢FankScale的“纹理矩阵”给了我google搜索的关键字,感谢其他两位朋友的参与。

2

主题

123

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-7-3 19:39:00 | 显示全部楼层

Re:关于三角形面顶点坐标的Y轴与纹理坐标的U轴方向相

恭喜,不过注意texture transform的开销很大。祝你早日理解并适应纹理坐标的映射关系。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 21:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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