首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“点击直达”GLFW窗口?

“点击直达”GLFW窗口?
EN

Stack Overflow用户
提问于 2020-04-29 03:20:02
回答 1查看 633关注 0票数 2

我有一个小问题设置我的glfw覆盖正确,我已经成功地创建了一个透明背景的glfw窗口,现在我想使窗口也“点击”,这样我就可以访问它后面的窗口,让它像一个覆盖。

遗憾的是,我不知道如何在glfw中做到这一点,我当前初始化窗口的代码是这样的:

代码语言:javascript
复制
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);

我还尝试在给定glfwGetX11Window函数的情况下使用glfw3_native.h,并尝试执行以下操作

代码语言:javascript
复制
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);
    }
}

但这并不管用:/

我如何正确地设置我的窗口忽略我的点击,并让它传递到后面的窗口,这样我就可以将其用作覆盖?

EN

回答 1

Stack Overflow用户

发布于 2020-08-22 23:34:58

GLFW recently中添加了一个新的窗口提示GLFW_MOUSE_PASSTHROUGH来启用此功能。

你可以这样使用它:

代码语言:javascript
复制
glfwWindowHint(GLFW_MOUSE_PASSTHROUGH, GLFW_TRUE);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61488266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档