代码之家  ›  专栏  ›  技术社区  ›  thyrgle

OpenGL暂停问题

  •  0
  • thyrgle  · 技术社区  · 14 年前

    我有以下函数用作 glutKeyboardFunc 功能参数:

    void handleKeypress(unsigned char key, //The key that was pressed
                        int x, int y) {    //The current mouse coordinates
        switch (key) {
            case 27: //Escape key
                exit(0); //Exit the program
        }
    
        if (key == 'a')
        {
            moveCircleLeft(0);
        }
        if (key == 'w')
        {
            moveCircleUp(0);
        }
        if (key == 's')
        {
            moveCircleDown(0);
        }
        if (key == 'd')
        {
            moveCircleRight(0);
        }
    }
    

    现在我给你看 moveCircleLeft 作为一个例子 moveCircle

    void moveCircleLeft(int x)
    {
        characterX = characterX - 0.1;
        glutPostRedisplay();
        x++;
        if (x < 10)
        {
            glutTimerFunc(10, moveCircleLeft, x);
        }
    }
    

    其他的 characterY 相对于 characterX .

    1 回复  |  直到 14 年前
        1
  •  1
  •   PeterK    14 年前

    boolean 每个键的变量(最好是一个数组)。然后使用 KeyDown/KeyUp 而不是 KeyPress (我相信过多的东西,就像 KeyboardUpFunc KeyboardFunc ,但现在不记得了)。在 KeyDown ,将相应的变量设置为true KeyUp ,将其设置为false。现在你可能有一个 Idle