游戏开发论坛

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

D3D中显示文字的问题

[复制链接]

12

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2005-12-26 17:15:00 | 显示全部楼层 |阅读模式
我最近用D3DXFONT写了一个显示文字的小程序,下面是显示文字的函数:
void ShowText(const char* szText)
{
                HFONT hFont;

                int nHeight = 30;
        int nWeight = FW_NORMAL;
        DWORD dwItalic = 0;
        DWORD dwUnderlined = 0;

        hFont = CreateFont(nHeight, 0, 0, 0, nWeight, dwItalic, dwUnderlined, 0, ANSI_CHARSET, 0, 0, 0, 0, "Times New Roman");

        LPD3DXFONT pFont;     // 会出问题
        D3DXCreateFont(g_pD3DDevice, hFont, &pFont);

        RECT rect;
        rect.left       = 0;
        rect.top       = 0;
        rect.right     = 0;
        rect.bottom = 0;

        pFont->Begin();
        pFont->DrawTextA(szText, -1, &rect, DT_CALCRECT, 0);
        pFont->DrawTextA(szText, -1, &rect, DT_LEFT, 0xffffffff);
        pFont->End();
}
然后我在Render()主循环中调用它,刚运行时正常,但运行了一两分钟后会报错,
但我把 LPD3DXFONT pFont; 换成 static LPD3DXFONT pFont; 或改为全局变量后,
问题消失,似乎是内存泄漏,但不确定,希望各位高手帮帮我,在下先谢过了!!

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2005-12-26 17:37:00 | 显示全部楼层

Re:D3D中显示文字的问题

是泄漏了

hFont = CreateFont(nHeight, 0, 0, 0, nWeight, dwItalic, dwUnderlined, 0, ANSI_CHARSET, 0, 0, 0, 0, "Times New Roman");

LPD3DXFONT pFont;     // 会出问题
D3DXCreateFont(g_pD3DDevice, hFont, &pFont);

显示一次创建一次,又没释放

把它们放到外面去,做为类成员或者全局变量,不要每次显示之前创建

12

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
 楼主| 发表于 2005-12-26 22:06:00 | 显示全部楼层

Re:D3D中显示文字的问题

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

本版积分规则

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

GMT+8, 2026-1-23 02:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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