【问题标题】:Change background of GLFWwindow on key press在按键时更改 GLFWwindow 的背景
【发布时间】:2019-08-11 04:59:17
【问题描述】:

当我按下“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;
           }
       }
   }
}

【问题讨论】:

  • 你已经接近了。使用全局变量作为计数器。如果键等于 B,则递增计数器,然后打开计数器的新值以运行正确的 glClearColor 函数。

标签: c++ visual-studio opengl visual-c++ glfw


【解决方案1】:

当你按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;
           }
       }
    }

【讨论】:

    猜你喜欢
    • 2019-12-31
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多