游戏开发论坛

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

D3D做二维游戏的一个问题(只显示一部分图片)

[复制链接]

7

主题

15

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-9-28 10:09:00 | 显示全部楼层 |阅读模式
我用D3D9做一个二维游戏。图片已经显示出来了。但是我并不想全部显示出来(因为要做动画,就像DDraw那样,一幅图很多动作,一桢桢放,因为DDraw中Blt可以设原图和目标位置的大小)。
我是这样写的:
在初始化函数中:
CUSTOMVERTEX g_Vertices[] ={
{ -1.0f,-1.0f, 0.0f, 0xfffffffff, 0.0f,1.0f},
{  -1.0f, 1.0f, 0.0f, 0xffffffff, 0.0f,0.0f},
{  1.0f,-1.0f, 0.0f, 0xffffffff, 1.0f,1.0f},
{ 1.0f,1.0f,0.0f,0xffffffff,1.0f,0.0f}, };
if( FAILED( hr = D3DUtil_CreateTexture( m_pd3dDevice, _T("09B.JPG"),&m_pTextures ) ) ) return hr;

在渲染函数中:
m_pd3dDevice->SetStreamSource( 0, m_pMyVB, 0, sizeof(CUSTOMVERTEX) );
m_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
m_pd3dDevice->SetTexture( 0, m_pTextures );
m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );

图片已经显示出来了。只是怎么只显示一部部分图片?没有blt,不习惯啊.55555

1

主题

21

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2004-9-28 10:43:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

修改纹理坐标

7

主题

15

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2004-9-28 10:53:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

我知道是修改纹理坐标,但是具体怎么整?能写些具体代码吗?

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2004-9-28 11:32:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

-1.0f,-1.0f, 0.0f, 0xfffffffff, 0.0f,1.0f

后面2个就是材质的UV坐标,改它就行

参考一下材质寻址的资料吧,SDK很不错的阿,上面都有这方面的图示,微软真是伟大

7

主题

15

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2004-9-28 12:12:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

谢谢bigbook2000,已经实现。但是修改后面2个就是材质的UV坐标,每次都要Lock和UnLock。我看得文档说Lock这样的开销很大,尽量不用。应考虑矩阵变换等。如果这样,还有没有其他的办法呢?

24

主题

161

帖子

179

积分

注册会员

Rank: 2

积分
179
发表于 2004-9-28 17:25:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

用vs

9

主题

32

帖子

132

积分

注册会员

Rank: 2

积分
132
发表于 2004-9-28 17:34:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

修改参数 m_fTextureX ,m_fTextureY ,m_fTextureWidth ,m_fTextureHeight
纹理起始坐标                     纹理的载入宽度    高度
数值控制在0.0f ----- 1.0f之间
    CUBIOD_CUSTOMVERTEX cvVertices[] =
    {       
        //Face 1
        { m_rX, m_rY, 0.0f, 1.0f, m_dBaseColor, m_fTextureX, m_fTextureY },
        { m_rX+m_rWidth, m_rY, 0.0f, 1.0f, m_dBaseColor, m_fTextureX + m_fTextureWidth, m_fTextureY },
        { m_rX, m_rY+m_rHeight, 0.0f, 1.0f, m_dBaseColor, m_fTextureX, m_fTextureY + m_fTextureHeight },
        { m_rX+m_rWidth, m_rY+m_rHeight, 0.0f, 1.0f, m_dBaseColor, m_fTextureX + m_fTextureWidth, m_fTextureY + m_fTextureHeight}
        };

9

主题

32

帖子

132

积分

注册会员

Rank: 2

积分
132
发表于 2004-9-28 17:35:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

我实现了,很快呀。开销不大

62

主题

296

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
发表于 2004-9-28 19:43:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

要创建VB后改变的话,就要改变纹理坐标矩阵。注意平移操作是修改矩阵的31和32元素,所以不能用D3DXMatrixTranslation。

7

主题

15

帖子

19

积分

新手上路

Rank: 1

积分
19
 楼主| 发表于 2004-9-29 09:53:00 | 显示全部楼层

Re:D3D做二维游戏的一个问题(只显示一部分图片)

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

本版积分规则

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

GMT+8, 2025-8-18 19:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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