"Сквозное" окно GLFW? - PullRequest
       20

"Сквозное" окно GLFW?

0 голосов
/ 28 апреля 2020

У меня небольшая проблема с правильной настройкой оверлея glfw, я уже успешно создал окно glfw с прозрачным фоном, теперь я хочу сделать окно также "щелчком", чтобы я мог получить доступ к windows позади него и пусть он действует как наложение.

к сожалению, я не могу понять, как это сделать в glfw, мой текущий код для инициализации окна выглядит так:

Width = 3440;
Height = 1440;
/* GLFW */
if (!glfwInit()) {
    fprintf(stdout, "[GLFW] failed to init!\n");
    exit(1);
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
glfwWindowHint(GLFW_DECORATED, GLFW_FALSE);
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
glfwWindowHint(GLFW_FOCUSED, GLFW_FALSE);
glfwWindowHint(GLFW_FOCUS_ON_SHOW, GLFW_FALSE);

/*Topmost and see through*/
glfwWindowHint(GLFW_FLOATING, GLFW_TRUE);
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);

glfwSwapInterval(1);
Window = glfwCreateWindow(Width, Height, "Overlay", 0, 0);
glfwMakeContextCurrent(Window);

Я также пытался с glfw3_native .h предоставил функцию glfwGetX11Window и попытался сделать что-то вроде

void Render::MakeClickable(bool State){
    auto X11Window = glfwGetX11Window(Window);
    if(State){

    }else{
        XserverRegion region = XFixesCreateRegion (MainDisplay, NULL, 0);
        XFixesSetWindowShapeRegion (MainDisplay, X11Window, ShapeInput, 0, 0, region);
        XFixesDestroyRegion (MainDisplay, region);
    }
}

, но это не сработало: /

Как правильно настроить окно, чтобы игнорировать мой щелчок и позволить ему перейти к windows позади, так что я могу использовать его как оверлей?

...