小编Baz*_*nga的帖子

在API小于19(Android)中暂停/恢复动画?

我意识到objectanimator对象的暂停和恢复方法仅适用于API:19.但是,既然我,也没有一半的Android用户都有这个API,有没有办法让你的动画暂停,然后从同一状态恢复,而不是从头开始?任何帮助将不胜感激.

api animation android objectanimator

10
推荐指数
1
解决办法
4696
查看次数

如何在OpenGL中使用鼠标移动相机?

我意识到这个问题之前已经在 stackoverflow 上被问过,但我还没有找到我完全理解的答案,所以我想我会得到一些针对我的情况的帮助。

我基本上希望能够使用鼠标绕 y 轴旋转。以下是我用于实际旋转的函数(角度以度为单位)。

void CCamera::RotateY (GLfloat Angle)
{
    RotatedY += Angle;

    //Rotate viewdir around the up vector:
    ViewDir = Normalize3dVector(ViewDir*cos(Angle*PIdiv180)
                    - RightVector*sin(Angle*PIdiv180));

    //now compute the new RightVector (by cross product)
    RightVector = CrossProduct(&ViewDir, &UpVector);
}
Run Code Online (Sandbox Code Playgroud)

由于我使用的是 GLUT,因此我使用被动函数来获取光标的 x,y 坐标。然后在我的显示器上有以下内容:

void display(void) {
    ...
    mouseDisplacement = mouseX - oldMouseX;

    if (mouseDisplacement > 0) Camera.RotateY(-1.0*abs(mouseDisplacement));
    else if (mouseDisplacement < 0) Camera.RotateY(1.0*abs(mouseDisplacement));

    oldMouseX = mouseX;
    glutWarpPointer(centerWindowX, centerWindowY);  // move the cursor to center of window
    ...    
}
Run Code Online (Sandbox Code Playgroud)

现在问题非常明显,由于显示函数每秒运行 60 次,每当我尝试移动鼠标光标时,它就会卡在中间。如果我没有显示功能循环,旋转就会非常缓慢。那么这样做的正确方法是什么? …

c++ opengl camera glut freeglut

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×1

animation ×1

api ×1

c++ ×1

camera ×1

freeglut ×1

glut ×1

objectanimator ×1

opengl ×1