我有一个小问题设置我的glfw覆盖正确,我已经成功地创建了一个透明背景的glfw窗口,现在我想使窗口也“点击”,这样我就可以访问它后面的窗口,让它像一个覆盖。
遗憾的是,我不知道如何在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);我还尝试在给定glfwGetX11Window函数的情况下使用glfw3_native.h,并尝试执行以下操作
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);
}
}但这并不管用:/
我如何正确地设置我的窗口忽略我的点击,并让它传递到后面的窗口,这样我就可以将其用作覆盖?
发布于 2020-08-22 23:34:58
GLFW recently中添加了一个新的窗口提示GLFW_MOUSE_PASSTHROUGH来启用此功能。
你可以这样使用它:
glfwWindowHint(GLFW_MOUSE_PASSTHROUGH, GLFW_TRUE);https://stackoverflow.com/questions/61488266
复制相似问题