游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1946|回复: 1

学习NORMAL MAP的实现中遇到的问题

[复制链接]

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2012-2-16 16:24:00 | 显示全部楼层 |阅读模式
其他的基本都会了,就是网上找资料得知使用D3DXComputeTangent()可以为MESH添加切线空间。
但是不清楚D3DXComputeTangent的参数应该如何传递,请指教。
HRESULT D3DXComputeTangent(
  LPD3DXMESH Mesh,
  DWORD TexStageIndex,
  DWORD TangentIndex,
  DWORD BinormIndex,
  DWORD Wrap,
  CONST DWORD * pAdjacency
);
这是API说明上写的。。只知道第一个是传MESH,最后两个分别是是否转置UV坐标和需要的空间大小。
还有三个怎么传?不解求指导。 [em5]
写大学论文中,虽然学校也不怎么重视论文,但是自己还是希望能写点什么出来

网上都是这么调用的。。能说下为什么是3个0么。。
D3DXComputeTangent( pMeshSysMem2, 0, 0, 0, true, NULL )

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2012-2-16 19:51:00 | 显示全部楼层

Re:学习NORMAL MAP的实现中遇到的问题

问题解决了。写下来防止有人有同样问题吧233

1。首先一定要自定义fvf格式,别用xfile的,否则不同的xfile有的会成功有的不成功。甚至连computenormal都不成功= =
比如这样:
    D3DVERTEXELEMENT9 decl[] =
         {
                  { 0, 0,  D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
                  { 0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0 },
                  { 0, 24, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 },
                  { 0, 32, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TANGENT, 0 },
                  D3DDECL_END()
     };

                Mesh->CloneMesh(
                        D3DXMESH_MANAGED,
                        decl,
                        Device,
                        &Mesh);

2。然后计算法线,然后计算切线
                if(FAILED(D3DXComputeNormals(Mesh,NULL)))
                        ::MessageBox(0, "D3DXComputeNormals() - FAILED", 0, 0);//算法线

                if(FAILED(D3DXComputeTangent(Mesh,0,0,D3DX_DEFAULT,FALSE,NULL)))//算切线
                        ::MessageBox(0, "D3DXComputeTangent() - FAILED", 0, 0);

ps:这里的2-4个参数其实传的就是你自定义的fvf的标号数,就是  { 0, 0,  D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 } 里最后一个0的位置,这里一般都用0,所以传0,
D3DX_DEFAULT就是-1,不计算的意思,因为可以把normal和tangent传到vs去算出binormal的,节省时间空间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-1 21:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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