glfwPollEvents() 不会在按键时调用键回调

glfwPollEvents() doesn't call keycallback on key press

本文关键字:调用 回调 glfwPollEvents      更新时间:2023-10-16

我在下面有代码,如果我使用 glfwGetKey(),它似乎可以工作,但它不会退出循环,甚至似乎也不会调用输入函数。我尝试传递*输入而不是输入,但没有骰子。可能是什么原因造成的?

#include <display.h>
#include <GL/glfw.h>
#include <stdlib.h>
#include <stdio.h>
bool running;
void GLFWCALL input( int key, int action )
{
    //if(key == GLFW_KEY_ESC ){
        running = false;
    //}
printf("%d",key);
}

int main(int argc, char* argv[])
{
running = true;
if(argc==3){
    int width = atoi(argv[1]);
    int height = atoi(argv[2]);
    Display d(width,height);
    glfwSetKeyCallback( *input );
    d.open();
    while(running){
    glfwPollEvents();
    printf("Running");
    }
    printf("n %d,%d %dn", width,height,GLFW_KEY_ESC);
    d.close();
    return 1;
}
else {
    printf("Usage: GLFW_play width height");
    return 0;
}
}

我认为你的程序的唯一问题是你没有在其他glfw函数之前调用glfwInit()。

根据 GLFW 用户指南的第 5 页,您必须在库中的任何其他函数之前调用 glfwInit,以确保正常运行。

另外,不要传递 *输入,只传递输入。