2015-08-09 104 views
0

我是图形化编程的新手,并且学习了关于SDL的简单教程。 因此,我面临一个问题,我无法找到答案: 每当我打开一个窗口,它只是复制下面的任何东西,而不是像教程中的白色。我认为这可能是由于一些隐藏的渲染缓冲区(?)。SDL2和OpenGL信息

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

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

+0

好的,谢谢!我只是感到困惑,因为教程中的人从一开始就得到了一个白色的背景,但我认为它可能是这样的。 – RunOrVeith

1

要修复您的鼠标位置打印,请用< <替换+。

+0

我刚注意到它!非常业余我 – RunOrVeith