1
그래서 나는 OpenGL 3.3 컨텍스트 (Windows 8) 투명 창이 있습니다. 내가 뭔가를 그리려고 할 때마다 그것은이 같은 반투명 그리는 이유를 몇 가지,하지만 난 그것을 불투명합니다 :투명 OpenGL 창 이상한 그릴
이
조각 쉐이더가
#version 330 core
uniform sampler2D Texture;
uniform sampler2D Texture2;
in vec2 fragTexcoord;
out vec4 color;
void main(void)
{
color = vec4(0.0, 1.0, 0.0, 1.0);
}
그래서 그냥 녹색되어야하고, 그러나 그렇지 않습니다. 마진과 DWM_BLURBEHIND와 :
는 또한 투명성 두 가지 방법으로 달성하기 위해 노력했습니다DWM_BLURBEHIND bb = {0};
bb.dwFlags = DWM_BB_ENABLE;
bb.fEnable = true;
bb.fTransitionOnMaximized = 1;
bb.hRgnBlur = CreateRectRgn(-0, -0, 1000, 1000);
DwmEnableBlurBehindWindow(_hWnd, &bb);
SendMessage(_hWnd, WM_PAINT, NULL, NULL);
UpdateWindow(_hWnd);
// The second way
MARGINS margins;
margins.cxLeftWidth = 0;
margins.cyTopHeight = 0;
margins.cxRightWidth = _Options.width;
margins.cyBottomHeight = _Options.height;
DwmExtendFrameIntoClientArea(_hWnd, &margins);
을하지만 두 가지 방법이 동일한 방식으로 작동합니다.
PIXELFORMATDESCRIPTOR pfd;
int format;
memset(&pfd, 0, sizeof(pfd));
pfd.nSize = sizeof(pfd);
pfd.nVersion = 1;
pfd.dwFlags = PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_SUPPORT_COMPOSITION;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cDepthBits = 24;
pfd.iLayerType = PFD_MAIN_PLANE;
이 창은 WS_EX_COMPOSITED하고 WS_POPUP 스타일 :
여기에 내가 픽셀 형식을 설정합니다. glClearColor는 0.0f, 0.0f, 0.0f, 0.0f로 설정됩니다.
어떻게하면 해결할 수 있습니까?
내가 묻는 것에 대해 혼란스러워합니다. 이미지의 녹색 상자는 완전히 불투명합니다. 또한 순수한 녹색입니다. 나는 분명히 그것이 "녹색이어야한다. 그러나 그렇지 않다"라고 왜 말하고 있는지 분명하지 않다. 또한 녹색 상자를 투명하게 만들기 위해 노력하고 있습니까? – Freddy
내 'wglarb' 라이브러리의 "계층화 된"테스트 프로그램을보고 싶을 수도 있습니다. DWM 흐리게/투명하게 작동하는 예제입니다. 나는 그것이 당신의 문제에 정말로 대답하지 않는다는 것을 안다. 그러나 이것이 당신에게보기 흉하지 않은 머리부터 시작한다는 것을 알 수있다. https://github.com/datenwolf/wglarb – datenwolf
@Freddy이 녹색 상자는 불투명하지 않습니다. 하단의 텍스트를 보면 : 배경이 흰색 인 경우 녹색 상자의 알파가 갑자기 0이됩니다. –