游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1971|回复: 3

为什么我的程序只显示了一行文本,FPS也不超过60呢?

[复制链接]

3

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2008-12-17 16:24:00 | 显示全部楼层 |阅读模式
为什么我的程序只显示了一行文本,FPS也不超过60呢?
下面是显示部分的代码。
void RenderScene()
{
        g_D3DDevice->Clear(0, NULL, D3DCLEAR_TARGET,
                D3DCOLOR_XRGB(0,0,0), 1.0f, 0);

        g_D3DDevice->BeginScene();

        g_FontPosition.top = 200;
        g_Font->DrawText(NULL, g_fpsStr, -1, &g_FontPosition,
                DT_CENTER, D3DCOLOR_XRGB(255,255,255));

        g_D3DDevice->EndScene();

        g_D3DDevice-&gtresent(NULL, NULL, NULL, NULL);

        // Get the FPS.
        g_time = timeGetTime();

        if(g_time - g_lastTime > 1.0f)
        {
                sprintf(g_fpsStr, "FPS: %d", g_fps);
                g_lastTime = g_time;
                g_fps = 0;
        }
        else
        {
                g_fps++;
        }
}

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-12-17 22:42:00 | 显示全部楼层

Re:为什么我的程序只显示了一行文本,FPS也不超过60呢?

垂直同步——>不高于显示器刷新率

20

主题

136

帖子

172

积分

注册会员

Rank: 2

积分
172
发表于 2008-12-18 01:06:00 | 显示全部楼层

Re: 为什么我的程序只显示了一行文本,FPS也不超过60呢?

给 RECT 指定一个有面积的区域。
把循环中的 ::Sleep(1) 更改为 ::Sleep(0) 或者 ::SwitchToThread()
通常 SwitchToThread() 更为安全。::Sleep(0) 仍会占用时间片,::SwitchToThread() 则准确地表明我们仅在实时和查询消息阶段需要时间片。

3

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2008-12-18 12:48:00 | 显示全部楼层

Re:为什么我的程序只显示了一行文本,FPS也不超过60呢?

谢谢大家,我把D3DPRESENT_PARATERS中的提交频率改为立即提交就好了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 17:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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