X11 Window / GLXWindow属性为GLFWwindow

时间:2017-06-15 17:58:38

标签: c++ opengl x11 glfw glx

我创建了GLX窗口,其中包含CWOverrideRedirect属性,并且破坏了输入形状,因此它看起来像OpenGL叠加层。现在我想绘制2d文本或使用ImGUI。很多例子都使用GLFW库。因此,主要问题是使GLFWwindow透明且没有输入形状。

int attr_mask =
        CWOverrideRedirect| //borderless, always on top
        CWColormap|
        CWBorderPixel|
        CWEventMask;
window_handle = XCreateWindow( Xdisplay,
                                Xroot,
                                x, y, width, height,
                                0,
                                visual->depth,
                                InputOutput,
                                visual->visual,
                                attr_mask, &attr);
..............

// Destroy input shape
XRectangle rect;
XserverRegion region = XFixesCreateRegion(Xdisplay, &rect, 1);
XFixesSetWindowShapeRegion(Xdisplay, window_handle, ShapeInput, 0, 0, region);
XFixesDestroyRegion(Xdisplay, region);

if ((del_atom = XInternAtom(Xdisplay, "WM_DELETE_WINDOW", 0)) != None) {
    XSetWMProtocols(Xdisplay, window_handle, &del_atom, 1);
}

来自ImGUI opengl3的例子

GLFWwindow* window = glfwCreateWindow(1280, 720, "ImGui OpenGL3 example", NULL, NULL);
glfwMakeContextCurrent(window);
gl3wInit();

0 个答案:

没有答案