SDL2 OpenGL窗口显示为半透明(有时)

时间:2016-07-16 13:06:04

标签: c++ opengl sdl-2

使用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上下文

这是窗口外观的图像:

Window created

我注意到窗口边框似乎不是0,因此可以使用与窗口本身不同的分辨率创建上下文。

我以前用这种方式制作了SDL2的窗口,从来没有遇到过这个问题,这让我觉得它是一个平台错误。

如果它有帮助,我正在使用开源英特尔驱动程序在64位KDE霓虹灯上运行KDE Plasma 5.7.1,Qt 5.7和KDE Frameworks版本5.24.0。

0 个答案:

没有答案