游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2308|回复: 2

请问用direct3d做2d游戏背景该怎么做?

[复制链接]

1

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-3-15 04:37:00 | 显示全部楼层 |阅读模式
我用direct3d9试着做一个小2D游戏。想把一张640x480的图片作为它的背景,我先用ID3DXSPRITE来画这个背景,但速度很慢,好像TEXTURE硬件不支持,把图片改成2^n大小也不行,好像图片太大了。
于是我试着用CreateOffscreenPlainSurface建个表面,D3DXLoadSurfaceFromFile读取图片。

g_pd3dDevice->CreateOffscreenPlainSurface( Info.Width, Info.Height, Info.Format, D3DPOOL_SYSTEMMEM, &g_pd3dBkSurface, NULL ) ;
D3DXLoadSurfaceFromFile( g_pd3dBkSurface, NULL, NULL, "bk.png", NULL, D3DX_FILTER_NONE, 0, NULL );

然后在Render()函数里面复制表面
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
LPDIRECT3DSURFACE9 pbksurface = NULL;
g_pd3dDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &pbksurface );
g_pd3dDevice->UpdateSurface( g_pd3dBkSurface, NULL, pbksurface, NULL );
pbksurface->Release();
g_pd3dDevice-&gtresent( NULL, NULL, NULL, NULL );

结果不显示背景图片,也不知道速度快不快。到底该怎么弄呢?

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2005-3-17 09:35:00 | 显示全部楼层

Re:请问用direct3d做2d游戏背景该怎么做?

把你前面用ID3DXSPRITE接口的代码贴出来撒,否则怎么分析?
ID3DXsprite是最快的2D接口,比用RHW顶点还要快,我贴过1024*768的图或是更大,速度仍然在300多帧(GF4MX440)仔细看下dxsdk,看看是不是哪里写错了

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-3-17 10:12:00 | 显示全部楼层

Re:请问用direct3d做2d游戏背景该怎么做?

我记得使用UpdateSurface之前需要调用BeginScene, StretchRect 才不能用在BeginScene, EndScene之间. 试试看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 20:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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