游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3019|回复: 4

新手求助,ID3DXSprite Draw 画完纹理后怎么画图啊?

[复制链接]

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2010-2-18 15:17:00 | 显示全部楼层 |阅读模式
下面是网上下的一个例子中的函数
VOID Render()
{
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, NULL, 1.0f, 0 );
    if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
    {
  g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
        g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
        g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );

                if ( SUCCEEDED( g_pSprite->Begin(D3DXSPRITE_ALPHABLEND) ) )
                {
                        g_pSprite->Draw(g_pTexture, NULL, NULL, NULL, 0xffffffff);


其他东西基本了解了,就是这里画完纹理后怎么怎么在画N副图?
比方说上面纹理是张大地图,我现在要加载张图片是个小人怎么画啊?
我试过
D3DXCreateTextureFromFile(g_pd3dDevice,"F:\\qb.png",&g_pTexture1);
g_pSprite->Draw(g_pTexture, NULL, NULL, NULL, 0xffffffff);
这样是可以显示就是太占CPU资源了,消息刷新CPU4-8%这样,我想一定有更好的办法吧?
以前我用GDI都是直接画好所有的进内存,最后COPY到DC就可以了。
高手回复下 谢谢。


                        g_pSprite->End();
                }

        g_pd3dDevice->EndScene();
    }
    g_pd3dDevice-&gtresent( NULL, NULL, NULL, NULL );
}

0

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2010-2-22 23:43:00 | 显示全部楼层

Re:新手求助,ID3DXSprite Draw 画完纹理后怎么画图啊?

没太看明白。
载入纹理图片一般是预处理。
可以定义一个纹理数组,在初始化时载入N张图片。具体绘制的时候就选择相应的纹理。

0

主题

160

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2010-2-25 23:22:00 | 显示全部楼层

Re:新手求助,ID3DXSprite Draw 画完纹理后怎么画图啊?

学习中

1

主题

78

帖子

97

积分

注册会员

Rank: 2

积分
97
发表于 2010-2-27 22:08:00 | 显示全部楼层

Re:新手求助,ID3DXSprite Draw 画完纹理后怎么画图啊?

D3DXCreateTextureFromFile(g_pd3dDevice,"F:\\qb.png",&g_pTexture1);是从磁盘载入纹理,你把这个放在每帧渲染的地方,而且每次都渲染,不慢才怪,还显存泄露

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2010-3-3 18:18:00 | 显示全部楼层

Re:新手求助,ID3DXSprite Draw 画完纹理后怎么画图啊?

读磁盘文件肯定慢啊。你要不多线程。要不提前加载。在渲染的时候最好不要做其他事情。
还有看cpu占用率是不对的。游戏的目的就是要尽量不让cpu空转。占用越高。说明你帧数越多。当然你乱写代码例外。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-15 00:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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