游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2154|回复: 5

使用SHADER给.X模型着色,纹理乱了.

[复制链接]

26

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2006-12-4 04:48:00 | 显示全部楼层 |阅读模式
1.该模型在D3D的Tutorials的MESH例子里使用时显示正常.
证明模型没问题.
2.我在我的程序里使用D3D的tiger.x文件时,纹理显示也是有问题,证明是程序的问题.
3.在载入模型的程序里顶点声明如下:
int CModel:oadXFile(char* name)
{
        HRESULT                hr;
        LPD3DXMESH        pMeshSysMem = NULL;

        if (FAILED (D3DXLoadMeshFromX(name, D3DXMESH_SYSTEMMEM,
                                m_pd3dDevice, NULL, NULL, NULL, NULL, &pMeshSysMem)))
            MessageBox(NULL, "Failed to LoadMeshFromX ", "ERROR", MB_OK|MB_SETFOREGROUND|MB_TOPMOST);

        D3DVERTEXELEMENT9 decl[]=
        {
                // stream, offset, type, method, semantic type (for example normal), ?
                {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
                {0,  12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
                {0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0},
                D3DDECL_END()
        };

        hr = D3DXComputeNormals(pMeshSysMem,NULL);
        if(FAILED(hr))
                return E_FAIL;
        hr = pMeshSysMem->CloneMesh(D3DXMESH_MANAGED, decl, m_pd3dDevice, &m_pMesh);
//m_pMesh定为渲染时用的模型数据指针.
        return S_OK;
}

以上程序是从DEMO里COPY过来的,shader程序也是.
不过用到我的.X模型上就有问题了.纹理乱了,看下图:



左边的是程序里渲染的,纹理乱了.
右边的正常的状态,是3DSMAX里渲染的.
应该是上面那段载入模型的代码有问题。``
大家帮忙看看这问题啊`` [em4] 

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-12-4 09:22:00 | 显示全部楼层

Re:使用SHADER给.X模型着色,纹理乱了.

0,  12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
{0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0},
24应该写成20吧。。。。纹理坐标是float2,只占8字节

26

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
 楼主| 发表于 2006-12-4 15:52:00 | 显示全部楼层

Re:使用SHADER给.X模型着色,纹理乱了.

24应该写成20吧。。。。纹理改成8,之后,物体变扁了,

TEXCOORD那里改成16.贴图也是乱.

哎,还是没能解决哦`````

到底怎么搞哦````````

36

主题

197

帖子

197

积分

注册会员

Rank: 2

积分
197
发表于 2006-12-4 17:51:00 | 显示全部楼层

Re:使用SHADER给.X模型着色,纹理乱了.

SetVertexDeclaration了?
读取得文件你肯定是pos,tex,nor的格式?dx例子没有做转换么?

26

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
 楼主| 发表于 2006-12-4 22:28:00 | 显示全部楼层

Re: Re:使用SHADER给.X模型着色,纹理乱了.

查无此人: Re:使用SHADER给.X模型着色,纹理乱了.

SetVertexDeclaration了?
读取得文件你肯定是pos,tex,nor的格式?dx例子没有做转换么?


SetVertexDeclaration了!
我把模型换成是D3D的tiger.x纹理也是乱了.``

26

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
 楼主| 发表于 2006-12-5 02:32:00 | 显示全部楼层

Re:使用SHADER给.X模型着色,纹理乱了.

解决了,原来是SHADER的问题~

sampler ColorMapSampler = sampler_state
{
   Texture = (ColorMap);
   MAGFILTER = LINEAR;
   MINFILTER = LINEAR;
   MIPFILTER = LINEAR;
   ADDRESSU = CLAMP; //这句应该去掉
   ADDRESSV = CLAMP; //这句应该去掉
};
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 00:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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