SDL2和OpenGL发生冲突

时间:2015-08-09 12:23:29

标签: qt opengl format sdl qmake

我是图形编程的新手,并且遵循SDL的简单教程。 在此,我遇到了一个我无法找到答案的问题: 每当我打开一个窗口时,它只会复制它下面的任何内容,并且不像教程那样是白色的。我想这可能是由于一些隐藏的渲染缓冲区(?)。

Terminal and window that just copied background

我正在运行以下代码:

 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 += \
...

有没有人知道可能导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:2)

您正在请求一个带有opengl上下文形式SDL的窗口。但你永远不会画任何东西(包括清除缓冲区)。我不知道为什么你会期望这样的白色图像。帧缓冲区的内容将完全未定义。而你所获得的是这种未定义内容可能看起来的众多可能性之一。

答案 1 :(得分:1)

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