游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3208|回复: 9

请教大虾们过于DX贴图问题

[复制链接]

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2008-6-22 01:26:00 | 显示全部楼层 |阅读模式
小弟初学DX,有一贴图问题不是很明白,想在这里想大虾指导我一下。

我根据DX书上,用VB画了4个点

CUSTOMVERTEX cvVertices[] ={
{-2.12f ,     -1.51f ,       0,  D3DCOLOR_ARGB(1, 255, 255, 255),0,1},
{-2.12f ,      1.5139f ,     0,  D3DCOLOR_ARGB(1, 255, 255, 255),0,0},
{2.115f ,     -1.51f ,       0,  D3DCOLOR_ARGB(1, 255, 255, 255),1,1},
{2.115f ,      1.5139f ,     0,  D3DCOLOR_ARGB(1, 255, 255, 255),1,0},        
};
。。。。
再作渲染的时候作贴图上去。


但是如果我要在渲染的过程中要改变所用的贴图的UV坐标的话(我想改到只贴一半的贴图),我应该怎样写?貌似如果用重新再绘的方法的话感觉就很愚蠢。请问是否有其他方法?

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2008-6-22 18:14:00 | 显示全部楼层

Re:请教大虾们过于DX贴图问题

可去VB区问,必有人能回答。

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2008-6-22 18:38:00 | 显示全部楼层

Re:请教大虾们过于DX贴图问题

可是这个是C++下的啊?我这里VB是只顶点缓冲

1

主题

19

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2008-6-22 19:19:00 | 显示全部楼层

Re:请教大虾们过于DX贴图问题

封装个函数改变顶点UV啊,然后再循环中不断调用你这个函数拉 
void updata()
{
  LockBV
   ....
      ...../在中间写上你改变的定点缓冲的UV啊
      .......
  UnLock VB
}

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2008-6-23 08:31:00 | 显示全部楼层

Re: Re:请教大虾们过于DX贴图问题

新人新猪肉: Re:请教大虾们过于DX贴图问题

可是这个是C++下的啊?我这里VB是只顶点缓冲

哦,不好意思,失敬失敬,可能我最近老去VB板块看游戏之家和口袋打架,你一提VB,我没想到是顶点缓存,哈哈。。。。 [em13]

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2008-6-23 17:13:00 | 显示全部楼层

Re: Re:请教大虾们过于DX贴图问题

ZP146: Re:请教大虾们过于DX贴图问题

封装个函数改变顶点UV啊,然后再循环中不断调用你这个函数拉 
void updata()
{
  LockBV
   .......


我就是想问下“在中间写上你改变的定点缓冲的UV啊 ”应该怎样去代码实现。


这是我创建时的代码
VOID* pVertices;
                    
CUSTOMVERTEX cvVertices[] =
{
{-2.12f ,     -1.51f ,       0,  D3DCOLOR_ARGB(1, 255, 255, 255),0,1},
{-2.12f ,      1.5139f ,     0,  D3DCOLOR_ARGB(1, 255, 255, 255),0,0},
{2.115f ,     -1.51f ,       0,  D3DCOLOR_ARGB(1, 255, 255, 255),1,1},
{2.115f ,      1.5139f ,     0,  D3DCOLOR_ARGB(1, 255, 255, 255),1,0       
};
g_pd3dDevice->CreateVertexBuffer(6 * sizeof(CUSTOMVERTEX),                                                0,
                                D3DFVF_CUSTOMVERTEX,
                                D3DPOOL_DEFAULT,
                                &g_pVB,
                                NULL);
g_pVB->Lock(0, sizeof(cvVertices),&pVertices, 0);

memcpy(pVertices, cvVertices, sizeof(cvVertices));

g_pVB->Unlock();
}

高手能不能提供点代码例子参考参考哦?

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2008-6-23 17:26:00 | 显示全部楼层

Re:请教大虾们过于DX贴图问题

g_pVB->Lock(0, sizeof(cvVertices),&pVertices, 0); 出来的就是你的顶点.你改变 pvertices不就好了

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2008-6-23 19:56:00 | 显示全部楼层

Re:请教大虾们过于DX贴图问题

这样简单的需求,直接用纹理坐标变换矩阵不就可以啦?SetTransform(D3DTS_TEXTURE#)

1

主题

19

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2008-6-24 00:20:00 | 显示全部楼层

Re:请教大虾们过于DX贴图问题

m_pVB->Lock(0,sizeof(VB),(void**)&pVertices,D3DLOCK_DISCARD);
        pVertices[0].tu=fFrame*m_fstep;
        pVertices[1].tu=fFrame*m_fstep+m_fstep;
        pVertices[2].tu=fFrame*m_fstep;
        pVertices[2].tv=20;
        pVertices[3].tu=fFrame*m_fstep+m_fstep;
        pVertices[3].tv=20;
m_pVB->Unlock();
很简单的拉。你想怎么改变UV就怎么写

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2008-6-24 18:48:00 | 显示全部楼层

Re:请教大虾们过于DX贴图问题

这么多高手解答,好感动哦。。。。。。谢谢你们!
楼上说的不LockVB,是什么方法?是8楼的那种吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 04:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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