SDL2 和 OpenGL 冲突

SDL2 and OpenGL conflict

我是图形编程的新手,正在学习有关 SDL 的简单教程。 特此,我面临一个我无法找到答案的问题: 每当我打开 Window 时,它只会复制它下面的内容,而不是像教程中那样是白色的。我认为这可能是由于某些隐藏的渲染缓冲区 (?)。

我是运行以下代码:

 SDL_Init(SDL_INIT_EVERYTHING);

_window = SDL_CreateWindow("EvolutionEngine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                           _screenwidht, _screenheight, SDL_WINDOW_OPENGL);


SDL_Event evnt;
while(SDL_PollEvent(&evnt) == true)
{
    switch (evnt.type)
    {
    case SDL_QUIT:
        _gameState = GameState::EXIT;
        break;
    case SDL_MOUSEMOTION:
        std::cout << "(" << evnt.motion.x << "," << evnt.motion.y << ")\n";
        break;
    }
}

(这些在不同的函数中,但唯一与问题相关的代码)。 我的 qmake 文件如下所示:

QT       += core
QT       -= gui
TARGET = Evolution
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
CONFIG += link_pkgconfig
PKGCONFIG += sdl2

QMAKE_CXXFLAGS += -std=c++11
SOURCES += \
...
HEADERS += \
...

有没有人知道可能导致此问题的原因以及我该如何解决它?

要修复鼠标位置打印,请将 + 替换为 <<。

您正在请求 window 具有 opengl 上下文形式的 SDL。但是你永远不会向它绘制任何东西(包括清除缓冲区)。我不知道为什么您会期望从中得到白色图像。您的帧缓冲区的内容将完全 未定义。您得到的是此类未定义内容的多种可能性之一。