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。但是你永远不会向它绘制任何东西(包括清除缓冲区)。我不知道为什么您会期望从中得到白色图像。您的帧缓冲区的内容将完全 未定义。您得到的是此类未定义内容的多种可能性之一。
我是图形编程的新手,正在学习有关 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。但是你永远不会向它绘制任何东西(包括清除缓冲区)。我不知道为什么您会期望从中得到白色图像。您的帧缓冲区的内容将完全 未定义。您得到的是此类未定义内容的多种可能性之一。