游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2293|回复: 8

CS反恐精英,为什么在每一台机器里的速度都一样快?

[复制链接]

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2006-2-10 16:57:00 | 显示全部楼层 |阅读模式
CS在我的机器上,FPS=20左右。我的机器是奔腾 800。
在奔腾2G的机器上,FPS=100左右。

为什么在奔腾800和奔腾2G的机器上,CS世界里的速度是一样的?
请用C++来说明以下。


GetSystemTime
程序很不流畅,有其他方法吗?

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-2-10 17:10:00 | 显示全部楼层

Re:CS反恐精英,为什么在每一台机器里的速度都一样快?

为什么不是一样快?

用GetTickCount()、timeGetTime()或者QueryPerformanceCounter() 配合 QueryPerformanceFrequency(),这3个方法从低精度到高精度,个人认为用timeGetTime()一般已经足够

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2006-2-10 20:31:00 | 显示全部楼层

Re:CS反恐精英,为什么在每一台机器里的速度都一样快?

谢谢。

timeGetTime()语句,怎么用?
变量怎么定义?
GLint time;吗?
time=timeGetTime();吗?

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2006-2-10 21:09:00 | 显示全部楼层

Re:CS反恐精英,为什么在每一台机器里的速度都一样快?

........简单的很
DWORD time=timeGetTime();

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2006-2-10 21:19:00 | 显示全部楼层

Re:CS反恐精英,为什么在每一台机器里的速度都一样快?

QueryPerformanceCounter() 配合 QueryPerformanceFrequency() 。。。。

刷新率限制。。。记得以前学过,不过当时不明白,现在有点开窍了

择出来以下代码,大概就是这么用

void CGame::Refresh()
{
        //得到当前时间
        static double dFPSCount = 0;
        static double dTimeE = 0, dTimeB = 0;
        static double dTimeRefresh = 0;
        dFPSCount += dTimeE - dTimeB;


    //防止FPS变动过快,0.5秒才变一次
    if(dFPSCount > 0.5)
    {
        dTimeRefresh = dTimeE - dTimeB;
        dFPSCount = 0;
    }

    //PrintLog(0, "Game refresh()\n");

    //得到当前时间
    QueryPerformanceCounter((LARGE_INTEGER*)&g_nStart);
    //将时间转为以秒为单位
    dTimeB = (double)(g_nStart) / (double)g_nFreq;

    //。。。。。。运行OOXX

    //得到当前时间
    QueryPerformanceCounter((LARGE_INTEGER*)&g_nEnd);
    //将时间转为以秒为单位
    dTimeE = (double)(g_nEnd) / (double)g_nFreq;

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2006-2-10 21:29:00 | 显示全部楼层

Re:CS反恐精英,为什么在每一台机器里的速度都一样快?

还要自己调整一下

14

主题

283

帖子

293

积分

中级会员

Rank: 3Rank: 3

积分
293
QQ
发表于 2006-2-11 13:10:00 | 显示全部楼层

Re:CS反恐精英,为什么在每一台机器里的速度都一样快?

保持速度的关键  s=vt,这么经典的物理公式~和刷新率没干

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
 楼主| 发表于 2006-2-11 13:45:00 | 显示全部楼层

Re:CS反恐精英,为什么在每一台机器里的速度都一样快?

哈哈,多谢啦!

明白了,
nowtime=timeGetTime();
time=nowtime-lasttime;
... ...
draw();
lasttime=nowtime;
... ...
谢谢!

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2006-2-13 02:05:00 | 显示全部楼层

Re:CS反恐精英,为什么在每一台机器里的速度都一样快?

做跟屏幕更新无关的世界更新,每台机器世界更新相隔时间保持相同就行了。
而不是每更新多少次屏幕就更新一次世界。
世界更新无需像屏幕更新一样频繁。

我知道我说得可对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 10:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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