我是图形编程的新手,并且遵循SDL的简单教程。 在此,我遇到了一个我无法找到答案的问题: 每当我打开一个窗口时,它只会复制它下面的任何内容,并且不像教程那样是白色的。我想这可能是由于一些隐藏的渲染缓冲区(?)。
我正在运行以下代码:
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 += \
...
有没有人知道可能导致这种情况的原因是什么?
答案 0 :(得分:2)
您正在请求一个带有opengl上下文形式SDL的窗口。但你永远不会画任何东西(包括清除缓冲区)。我不知道为什么你会期望这样的白色图像。帧缓冲区的内容将完全未定义。而你所获得的是这种未定义内容可能看起来的众多可能性之一。
答案 1 :(得分:1)
要修复鼠标位置打印,请将+替换为&lt;&lt;。