游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2433|回复: 5

[求助]加载图片时占用大量的内存

[复制链接]

22

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2008-1-19 14:30:00 | 显示全部楼层 |阅读模式
//我是个初学者,为什么加载图片的时候占大量的内存,我发一部分我写的代码
//运行的时间久了退出时就会很卡,我不知道是不是占用大量内存的原因
//消息循环
        while(msg.message!=WM_QUIT)
        {
                if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
                else
                {

                        render();

                }
               
        }
//下面是render内的语句
void render()
{
        IDirect3DSurface9 *backbuffer=NULL;//The back buffer pointer to recevie
        pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&backbuffer);

        srcSurface=getSurfaceFromBitmap("xy0059.bmp");//这里是我自己写的函数包插创建,加载等

        if(srcSurface==NULL)
                return;

        if(NULL==pd3dDevice)
                return;
        pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,
                D3DCOLOR_XRGB(0,255,0),1.0f,0);
        pd3dDevice->StretchRect(srcSurface,
                NULL,backbuffer,NULL,D3DTEXF_NONE);
        pd3dDevice-&gtresent(NULL,NULL,NULL,NULL);
}

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-1-19 14:37:00 | 显示全部楼层

Re:[求助]加载图片时占用大量的内存

srcSurface=getSurfaceFromBitmap("xy0059.bmp");
不知道你这里面写的是什么,不需要每次渲染的时候都去加载一个图片吧,尽管你的机器可能很快,内存很大
请检查一下,正确的做法,应该把纹理或表面什么的静态资源“事先”分配好
该用的时候“反复的使用”,确认不需要的时候才释放。

22

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
 楼主| 发表于 2008-1-19 14:59:00 | 显示全部楼层

Re:[求助]加载图片时占用大量的内存

你回答的时候我自己解决了问题,不过还是多谢你!
问题已解决,我得到了经验:

当我还不知道为什么占那和以大内存的时候,我以为我自己缺省了什么函数去释放内存
之类的,因此我就去查找DirectX9的帮助文档,此时我找到了IUnknown::Release(),
什么什么释放之类的,就凭着它的大概意思去做,但是徒劳无功,由于我没有学过COM
我一点也不会用这个东西,接着我发了问题到论坛,跟着自己去查找问题,在render()
中我把里面相关的内容一个个地删掉,去测试,再打开任务管理器去看一下,我的劳动没
有白费,终于找出祸根了,我之所以有这个错误,是因为没自信,总以为某些东西是高不可攀的。

因为我用的电子书是英文版本的,我能理解一大半它所说的,不过不懂的单
词就去查,总觉得不爽。我在查找单词的过程中即便查找到了那个单的,但意思不符合,
此时总觉得英语也须分计算机和非计算机的(是我自己认为的。)(请问谁有计算机英语教程)。

还有,我再问一下:学习DirectX9需不需要先学COM


2

主题

683

帖子

687

积分

高级会员

Rank: 4

积分
687
发表于 2008-1-19 20:59:00 | 显示全部楼层

Re:[求助]加载图片时占用大量的内存

还是需要有com的基础知识。就算不会开发com组件,也得会调用com。因为dx的接口都是com形式提供的

22

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
 楼主| 发表于 2008-1-20 01:45:00 | 显示全部楼层

Re:[求助]加载图片时占用大量的内存

谢谢

27

主题

418

帖子

455

积分

中级会员

Rank: 3Rank: 3

积分
455
QQ
发表于 2008-1-21 00:52:00 | 显示全部楼层

Re:[求助]加载图片时占用大量的内存

什么叫COM知识?我觉得会加载和释放就行了。
英语确实是有专业之分的。不过多看看,就记住了。
最好准备个电子词典。PC用的,不是快译通那种。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 23:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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