游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3109|回复: 7

虚心向高手求教D3D9中TCI贴图问题

[复制链接]

5

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2004-11-26 14:49:00 | 显示全部楼层 |阅读模式
D3D中有这样一段:

g_pd3dDevice->SetTexture( 0, g_pTexture );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );
//------以上我的理解为设置贴图--------------
D3DXMATRIXA16 mat;
        mat._11 = 0.25f; mat._12 = 0.00f; mat._13 = 0.00f; mat._14 = 0.00f;
        mat._21 = 0.00f; mat._22 =-0.25f; mat._23 = 0.00f; mat._24 = 0.00f;
        mat._31 = 0.00f; mat._32 = 0.00f; mat._33 = 1.00f; mat._34 = 0.00f;
        mat._41 = 0.50f; mat._42 = 0.50f; mat._43 = 0.00f; mat._44 = 1.00f;

g_pd3dDevice->SetTransform( D3DTS_TEXTURE0, &mat );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS,   D3DTTFF_COUNT2 );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION );

问题:
1.如何理解D3DXMATRIXA16,即4x4矩阵的含义和其中的_11,_12...等的含义。
2.D3D是如何将一张正方形bitmap贴到不规则的mesh上的。
3.能讲解一下TCI的原理吗。

备注:在下流泪等候。。。 [em17]

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2004-11-26 15:27:00 | 显示全部楼层

Re:虚心向高手求教D3D9中TCI贴图问题

1.D3DXMATRIXA16是DX9里新加的一个类,总体用下来的感觉是和D3DXMATRIX通用,MS这样做估计是为了增加精度吧。
2.那要用到帖图坐标,具体的可以自己在3D软件里建模时将帖图坐标做好后和模型一起放入X文件,和纹理一起在程序里设置显示就完成了

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2004-11-26 17:03:00 | 显示全部楼层

Re:虚心向高手求教D3D9中TCI贴图问题

1.D3DXMATRIXA16 你可以理解为4x4矩阵,所谓的A16是16字节对齐的意思, 要比D3DXMATRIX快
_11 就是矩阵里的第一行第一列的元素,_12就是第一行第2列的元素,以此类推
至于矩阵的具体意义, 这里说不清楚,还是找找基础数学书籍

2.这也是个很大的问题,找找一些图形学基础教程看看

3.TCI,就是设置纹理坐标的来源途径(texture coordinate in)
在一般情况下,纹理坐标来源于顶点描述,但是在某些特殊情况下,我们需要生成特定的纹理
坐标,比如反射, 这时候的纹理坐标就是需要根据摄像机的位置和顶点位置等信息算出来
这个时候就需要设置TCI,例如你这里的D3DTSS_TCI_CAMERASPACEPOSITION
就相当于纹理坐标来源于把顶点的位置信息变换到摄像机空间后的值

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2004-11-26 20:28:00 | 显示全部楼层

Re:虚心向高手求教D3D9中TCI贴图问题

楼上的正解,那些水面倒影哈~这样搞出来的

5

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2004-11-27 14:45:00 | 显示全部楼层

Re:虚心向高手求教D3D9中TCI贴图问题

多谢高手指点,看来我基础知识太差,应该好好学学。实在不行也可以如2楼说述在3D软件中做好贴图直接导到.x文件中。也不知道大多数游戏是不是这样做的。

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-11-28 01:28:00 | 显示全部楼层

Re: Re:虚心向高手求教D3D9中TCI贴图问题

我一直没注意settransform里面的texture,现在

明白了。不过,说水面的倒影,是不是这样呢:

我们假设一矩形代表水面。水面上有一个立方体。

立方体贴了纹理1。如果我们要想用纹理贴图的方

法在水面投影,就把texture1的矩阵设置成matrix1
(其实,这么说来,这个matrix1就是planer shadow(
平面投影)里面,我们算出来的投影矩阵吧?)

然后,我们再对水面矩形混合纹理1,出来的就是立方体
水面投影的效果?

其实,我觉得上面我说的方法恐怕不太对……哪位来说一下?

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-11-28 01:30:00 | 显示全部楼层

Re: Re:虚心向高手求教D3D9中TCI贴图问题

decsent: Re:虚心向高手求教D3D9中TCI贴图问题

多谢高手指点,看来我基础知识太差,应该好好学学。实在不行也可以如2楼说述在3D软件中做好贴图直接导到.x文件中。也不知道大多数游戏是不是这样做的。


应该是吧。

不过,动态的纹理混合也是比不可少的
啊。所以,应该是两者皆有吧。

5

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2004-11-29 09:50:00 | 显示全部楼层

Re:虚心向高手求教D3D9中TCI贴图问题

说到动态贴图,楼上各位高手还是没说怎么个贴法,也就是如何设置贴图matrix中的_11,_12等的值。还请赐教。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 11:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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