游戏开发论坛

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

可不可以 不把贴图的UV信息存储在顶点的结构里?(求助)

[复制链接]

5

主题

17

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2008-3-19 15:16:00 | 显示全部楼层 |阅读模式
我们一般在建立顶点结构时总是将FVF写成
struct SMVERTEX
{
        float x,y,z;
        unsigned long color;
        float u,v;
        SMVERTEX(){}
        SMVERTEX(float f)
        {
                x = f; y = f; z = f;
        }
};
然后再#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)

我的设计为了兼容OpenGL和软件3D接口所以想自己定义一些格式
例如 我想将定点压缩所以就定义定点为
struct SMVERTEX
{
        float x,y,z;
}


struct SMTEXEL
{
        int                vex;  //顶点的索引
        float                nx;
        float                ny;
        float                nz;
        float                u;
        float                v;
};
但是不知道这样的结构怎么来配合D3D? 我不想将UV合X,Y,Z写在一起!不知道D3D可不可以将他们分开?请大家帮助我?CreateIndexBuffer可以建立SMTEXEL这样格式的buffer么? 谢谢!

5

主题

17

帖子

21

积分

注册会员

Rank: 2

积分
21
 楼主| 发表于 2008-3-19 19:06:00 | 显示全部楼层

Re:可不可以 不把贴图的UV信息存储在顶点的结构里?(求

一般一个空间点会对应多个UV和顶点法线的,我不想把他们分开。
哎~  本来1500多个压缩后的顶点 现在要妥协成D3D的样式  重新组合后变成8000多个顶点了 效率好低呀  原来300帧现在降到190帧了  急死了  谁能帮帮我呀~
别沉呀 自己先顶一下

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2008-3-20 19:00:00 | 显示全部楼层

Re:可不可以 不把贴图的UV信息存储在顶点的结构里?(求

多流系统

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2008-3-20 19:01:00 | 显示全部楼层

Re:可不可以 不把贴图的UV信息存储在顶点的结构里?(求

你搜一下DX 多流应该就能搜到了。英文也就叫multistream好像

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-3-20 20:34:00 | 显示全部楼层

Re:可不可以 不把贴图的UV信息存储在顶点的结构里?(求

用序列化方案,需要的读入到内存,暂时不需要的写入磁盘

2

主题

141

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2008-3-21 10:17:00 | 显示全部楼层

Re: 可不可以 不把贴图的UV信息存储在顶点的结构里?(求

看你的意思是要用对应2个不同结构的vertexbuffer来渲染
第一个只含了position 或者另外的 normal
第二个只含u, v 或者另外的 tangent、binormal 等信息
最好的办法是放弃D3DFVF顶点声明
用vertex declaration
然后用多streaming source
这和最近有个贴问FVF还是顶点声明其实是一个理
用vertex declaration来代替FVF SDK有很详细的文档

5

主题

17

帖子

21

积分

注册会员

Rank: 2

积分
21
 楼主| 发表于 2008-3-21 18:58:00 | 显示全部楼层

Re:可不可以 不把贴图的UV信息存储在顶点的结构里?(求

谢谢大家的帮助
看样子多流是比较好的方案!  不过我可能 position 有1000个(尽量使空间顶点唯一 方便蒙皮计算) 而UV有3000个以上 能对应上么?
我知道3000多个index (IB)应该可以对应这1000个position, 可是这个index和UV怎么对应?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 17:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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