游戏开发论坛

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

timeGetTime()的一点疑问

[复制链接]

7

主题

30

帖子

46

积分

注册会员

Rank: 2

积分
46
QQ
发表于 2004-7-22 14:50:00 | 显示全部楼层 |阅读模式
如下代码:
    D3DXMATRIX matWorld, matWorldX, matWorldY, matWorldZ;
   
    //Create the transformation matrices
    D3DXMatrixRotationX(&matWorldX, timeGetTime()/400.0f);
    D3DXMatrixRotationY(&matWorldY, timeGetTime()/400.0f);
    D3DXMatrixRotationZ(&matWorldZ, timeGetTime()/400.0f);

    //Combine the transformations by multiplying them together
    D3DXMatrixMultiply(&matWorld, &matWorldX, &matWorldY);
    D3DXMatrixMultiply(&matWorld, &matWorld, &matWorldZ);

    //Apply the tansformation
    g_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);
这代代码很多示范代码都在用,意思很简单,就是根据时间绕几个轴转。但我在实际使用过程中也发现个问题,首先就是程序运行好几次后,再运行画面就不转了(我是用VC编译运行,直接按的Ctrl+F5)。我检查发现是 timeGetTime()/400.0f出了点问题,并且试着把400改大,改成600,又可以运行了,之后多运行几次又不行了,只有再把600改大为1000.因此看来,那这个值最好设大一点。不知实际情况是不是这样,所以特来向大家求证一下。

65

主题

225

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2004-7-22 15:07:00 | 显示全部楼层

Re:timeGetTime()的一点疑问

好像应该这样写:
D3DXMatrixRotationX(&matWorldX, (float)timeGetTime()/400.0f);

7

主题

67

帖子

67

积分

注册会员

Rank: 2

积分
67
QQ
发表于 2004-7-22 20:56:00 | 显示全部楼层

Re:timeGetTime()的一点疑问

我不是这样写,我设置一个速度,纪录两次渲染的时间差,然后用时间差乘以速度,再计算变换矩阵,一直都没发现有问题。

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2004-7-22 22:43:00 | 显示全部楼层

Re:timeGetTime()的一点疑问

timeGetTime()的分辨率不是很高,而且不是每一帧都会变化,这可以通过自己编写一个dos程序验证一下,循环输出100次timeGetTime()的值,发现值变化的不是很大,说明它的分辨率一般,可以试试参考用QueryPerformanceCounter(),它的分辨率较大。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-4 06:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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