OpenGL 恒定旋转角度

OpenGL constant rotation angle

我最近在做一些 openGL 编程,它涉及基本的矩阵变换,例如平移、旋转和缩放。我在做轮换时遇到了一些问题。这是我的问题。

现在我使用变量 rotationDegree 和变量 rotationStepSize 来控制旋转。当旋转标志打开时

//inside paintGL function
if(rotationFlag is on)
     rotationDegree += rotationStepSize
     if(rotationDegree > 360.0f)
         rotationDegree -= 360.0f

奇怪的是,由于我将 rotationStepSize 定义得非常小,旋转开始时非常慢,但随着时间的增加,它变得越来越快!

对于这种现象我有两种解释:

有谁知道如何解决这个问题?我用 google 搜索了关于使用 glutget(GL_TIME_ELAPSED) 的信息,但是在我的机器上,这个函数报告 "glutget: missing ENUM handle",这表明我的 glut 文件不完整,我猜?

那么有谁知道如何解决枚举问题或如何解决这个问题以创建一个让物体以恒定速度旋转的场景?

非常感谢!

根据freeglut_state.c,定义了glutGet函数

int FGAPIENTRY glutGet( GLenum eWhat )
{
#if TARGET_HOST_WIN32 || TARGET_HOST_WINCE
    int returnValue ;
    GLboolean boolValue ;
#endif

    switch (eWhat)
    {
        case GLUT_INIT_STATE:
        return fgState.Initialised;

        case GLUT_ELAPSED_TIME:
        return fgElapsedTime();
    }

我没有使用 freeglut,但请查看文档,也许您应该尝试 GLUT_ELAPSED_TIME 而不是 GL_TIME_ELAPSED

并像这样计算增量时间:

int preTime= 0;
while( ... )
{
     int currentTime= glutGet(GLUT_ELAPSED_TIME);
     int deltaTime = currentTime- preTime;
     preTime = currentTime;

     //... pass the deltaTime to whatever you want...
}