【发布时间】:2020-11-01 13:29:02
【问题描述】:
我想创建一个透明背景,但它只有在第 4 个(监视器)参数设置为 NULL 时才有效。如果我将窗口修改为全屏(如下面的代码所示),背景就会变成黑色而没有任何透明度。有什么解决办法吗?
注意:我只希望背景是透明的。不是整个窗口及其内容。
//at configuring
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, 1);
...
//at window creation
GLFWmonitor* primary = glfwGetPrimaryMonitor();
GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "Application",primary, NULL);
...
//in render loop
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
【问题讨论】:
-
Windows 上所有“独家全屏”恶作剧的要点之一是绕过桌面合成器(以消除额外的延迟和额外的复制步骤),如果你绕过对于合成器,透明度不再有意义,因为没有背景,也没有实例可以将您的输出混合到该背景上。
-
@derhass 所以主要问题是我不明白全屏的真正工作原理以及它对构图的作用。现在我已经设法使用 glfwWindowHint(GLFW_DECORATED, GL_FALSE); 在无边框窗口中运行应用程序;提示,它就像我想象的那样工作。谢谢你的回答!
标签: c++ windows opengl visual-studio-2019 glfw