在按键上更改GLFWwindow的背景

问题描述 投票:1回答:1

当我按下“B”键时,我希望能够循环显示5种背景颜色。现在我只能将颜色改为红色。我不确定我是否正确地走这条路。任何帮助,将不胜感激。

static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) {

if (key == GLFW_KEY_B && action == GLFW_PRESS)
{
    for (int i = 0; i < 5; i++)
    {
        switch (i)
        {
            case 0:
                glClearColor(1.0, 0.0, 0.0, 1.0);
                break;

            case 1:
                glClearColor(0.0, 1.0, 0.0, 1.0);
                break;

            case 2:
                glClearColor(0.41, 0.41, 0.41, 1.0);
                break;

            case 3:
                glClearColor(1.0, 1.0, 1.0, 1.0);
                break;

            case 4:
                glClearColor(0.0, 0.0, 1.0, 1.0);
                return;
           }
       }
   }
}
c++ visual-studio opengl visual-c++ glfw
1个回答
0
投票

当您按下B键时,循环开始并且您看到最后一种颜色,您需要将按键测试放入循环中。像这样:

static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    for (int i = 0; i < 5; i++)
    {
      Readkey(key);
       if (key == GLFW_KEY_B && action == GLFW_PRESS)
        {
        switch (i)
            {
              case 0:
                glClearColor(1.0, 0.0, 0.0, 1.0);
                break;

              case 1:
                glClearColor(0.0, 1.0, 0.0, 1.0);
                break;

            case 2:
                glClearColor(0.41, 0.41, 0.41, 1.0);
                break;

            case 3:
                glClearColor(1.0, 1.0, 1.0, 1.0);
                break;

            case 4:
                glClearColor(0.0, 0.0, 1.0, 1.0);
                return;
           }
       }
    }
© www.soinside.com 2019 - 2024. All rights reserved.