使用SDL2创建一个窗口并绘制后,窗口显示为半透明,并且根本不会绘制任何内容(完全透明)。
我创建窗口的代码是
#include <thread>
#include <chrono>
#include <SDL2/SDL.h>
#include <GL/gl.h>
int main(){
SDL_Init(SDL_INIT_VIDEO);
auto win = SDL_CreateWindow(
"test",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
1920, 1080,
SDL_WINDOW_OPENGL
);
auto ctx = SDL_GL_CreateContext(win);
SDL_GL_MakeCurrent(win, ctx);
glClearColor(0.f, 0.f, 1.f, 1.f);
glClear(GL_COLOR_BUFFER_BIT);
SDL_GL_SwapWindow(win);
std::this_thread::sleep_for(std::chrono::milliseconds(500));
/* destroy window and context */
SDL_Quit();
}
为简洁起见,我没有包含错误检查或上下文属性设置,但没有出现错误,上下文是在OpenGL版本3.3中具有24位深度缓冲区的RGBA8上下文
这是窗口外观的图像:
我注意到窗口边框似乎不是0
,因此可以使用与窗口本身不同的分辨率创建上下文。
我以前用这种方式制作了SDL2的窗口,从来没有遇到过这个问题,这让我觉得它是一个平台错误。
如果它有帮助,我正在使用开源英特尔驱动程序在64位KDE霓虹灯上运行KDE Plasma 5.7.1,Qt 5.7和KDE Frameworks版本5.24.0。