如何在全屏模式下(在OpenGL中)使背景透明
How to make the background transparent in fullscreen mode (in OpenGL)?
我想创建一个透明的背景,但只有当第4个(monitor(参数设置为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);
我尝试了一些东西,如果您在操作系统主题上支持透明,那么默认情况下看起来透明是有效的(有些Windows7主题只是纯色,所以请小心,因为您的操作系统主题将禁用操作系统透明支持(。
main.cpp文件:
// INCLUDE
#include "main.h"
// DECLARATION
static void key_event(GLFWwindow*, int, int, int, int);
// GLOBAL VARIABLES
int app_width = 512;
int app_height = 256;
// RUN
void main(void)
{
if (!glfwInit()) { exit(EXIT_FAILURE); }
//glfwWindowHint(GLFW_DECORATED, GLFW_FALSE);
glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
GLFWmonitor* monitor = glfwGetPrimaryMonitor();
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
GLFWwindow* window = glfwCreateWindow(mode->width, mode->height, "GLFW Test", monitor, NULL);
glfwSetKeyCallback(window, key_event);
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
while (!glfwWindowShouldClose(window))
{
glfwGetFramebufferSize(window, &app_width, &app_height);
glViewport(0, 0, app_width, app_height);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// TO DO
glBegin(GL_TRIANGLES);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.0f, 0.5f);
glVertex2f(0.5f, -0.5f);
glEnd();
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
exit(EXIT_SUCCESS);
}
static void key_event(GLFWwindow* window, int key, int scancode, int action, int mods)
{
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) {
glfwSetWindowShouldClose(window, GLFW_TRUE);
glfwTerminate();
exit(EXIT_SUCCESS);
}
}
main.h文件:
#pragma once
// INCLUDE
#include <iostream>
#include <conio.h>
#include <GLFW/glfw3.h>
对我来说就是工作。(我看到如果glClearColor没有完整的0.0f值,背景将不会完全透明…
相关文章:
- 如何在全屏模式下(在OpenGL中)使背景透明
- SDL2 透明背景
- 一个标签,其背景一方面是透明的,另一方面是上部窗口
- 调整HBITMAP的大小,同时保持透明背景
- 当我使用 DirectWrite 在 GDI hdc 上绘制文本时,如何设置透明背景
- 通过使用alpha混合opengl实现具有透明背景的纹理
- 如何使用 c++/WinAPI 绘制具有透明背景的文本
- Qt透明QWebView:过去的页面停留在新页面的背景中
- OpenFrameworks中的透明背景窗口
- C++libPng 编写一个具有透明背景的 PNG
- QWebEngine页面中的透明背景
- SDL 纹理透明背景
- ID2D1HwndRenderTarget始终具有黑色背景而不是透明
- 使用C++/OpenCV或Matlab将图像的白色背景替换为透明背景
- 透明背景的C++按钮
- MFC显示具有透明背景的png
- 如何在QT中使背景半透明
- 如何使我的纹理背景透明?(我的图像已经没有背景了)
- Q获取背景透明
- 如何使分组框文本背景透明