游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2328|回复: 3

dx纹理不显示,求教原因。

[复制链接]

7

主题

69

帖子

263

积分

中级会员

Rank: 3Rank: 3

积分
263
发表于 2012-2-4 12:51:00 | 显示全部楼层 |阅读模式
这是我的顶点格式
struct v
{
        v(float ix,float iy, float iz,float iu,float iv)
        {
                x=ix; y=iy; z=iz; u=iu; _v=iv;
        }
        float x,y,z;
        float u,_v;
        static const DWORD FVF=D3DFVF_XYZ|D3DFVF_TEX1;
};
渲染状态
        Device->SetTexture(0, Tex);
        Device->SetRenderState(D3DRS_LIGHTING, false);
坐标
        v1[0]=v(0.0f,0.0f,0.0f,0.0f,1.0f);
        v1[1]=v(0.0f,1.0f,0.0f,0.0f,0.0f);
        v1[2]=v(1.0f,0.0f,0.0f,1.0f,1.0f);
显示是黑灰色的 请问还有什么原因导致不显示纹理?

7

主题

69

帖子

263

积分

中级会员

Rank: 3Rank: 3

积分
263
 楼主| 发表于 2012-2-4 13:19:00 | 显示全部楼层

Re:dx纹理不显示,求教原因。

我找到了直接drawprimativ可以显示纹理,用MESH不可以。
那位高手帮我看看mesh设置有什么问题?
        pteapot->LockVertexBuffer(D3DLOCK_NO_DIRTY_UPDATE,(void**)&v1);
        v1[0]=v(0.0f,0.0f,0.0f,0.0f,1.0f);
        v1[1]=v(0.0f,1.0f,0.0f,0.0f,0.0f);
        v1[2]=v(1.0f,0.0f,0.0f,1.0f,1.0f);
        pteapot->UnlockVertexBuffer();
        WORD* index;
        pteapot->LockIndexBuffer(D3DLOCK_NO_DIRTY_UPDATE,(void**)&index);
        index[0]=0;
        index[1]=1;
        index[2]=2;
        pteapot->UnlockIndexBuffer();
        D3DXATTRIBUTERANGE attr[1]=
        {
                {0,0,1,0,3}
        };
        pteapot->LockAttributeBuffer(D3DLOCK_NO_DIRTY_UPDATE,(DWORD**)&index);
        pteapot->SetAttributeTable(attr,1);
        pteapot->UnlockAttributeBuffer();

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-2-14 22:04:00 | 显示全部楼层

Re:dx纹理不显示,求教原因。

不能显示纹理:
1)检查投影矩阵和视口矩阵
2)灯光、材质搭配。
3)Alpha通道
4)背面裁剪
5)贴图格式,TGA格式在D3D中比较容易出问题,建议用JPG、PNG、DDS。
暂时想到这些。

7

主题

69

帖子

263

积分

中级会员

Rank: 3Rank: 3

积分
263
 楼主| 发表于 2012-2-20 16:41:00 | 显示全部楼层

Re:dx纹理不显示,求教原因。

谢谢。已经找到原因是视口矩阵错了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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