C++ SFML视频模式中断应用程序
使用SFML sf::VideoMode会破坏我的应用程序,说“Singularity.exe已停止工作” 具体而言,这一行:C++ SFML视频模式中断应用程序,c++,sfml,C++,Sfml,使用SFML sf::VideoMode会破坏我的应用程序,说“Singularity.exe已停止工作” 具体而言,这一行: _mainWindow.create(sf::VideoMode(1024,768,32), "Singularity"); 这条线就是导致问题的原因。当我删除它时,应用程序工作正常。以下是主类文件的全部代码: #include "stdafx.h" #include "Game.h" void Game::Start(void) { if (_ga
_mainWindow.create(sf::VideoMode(1024,768,32), "Singularity");
这条线就是导致问题的原因。当我删除它时,应用程序工作正常。以下是主类文件的全部代码:
#include "stdafx.h"
#include "Game.h"
void Game::Start(void)
{
if (_gameState != Uninitialized)
return;
_mainWindow.create(sf::VideoMode(1024,768,32), "Singularity");
_gameState = Game::Playing;
while (!IsExiting())
{
GameLoop();
}
_mainWindow.close();
}
bool Game::IsExiting()
{
if (_gameState == Game::Exiting)
return true;
else
return false;
}
void Game::GameLoop()
{
sf::Event currentEvent;
while (_mainWindow.pollEvent(currentEvent))
{
switch (_gameState)
{
case Game::Playing:
{
_mainWindow.clear(sf::Color(255, 0, 0));
_mainWindow.display();
if (currentEvent.type == sf::Event::Closed)
{
_gameState = Game::Exiting;
}
break;
}
}
}
}
Game::GameState Game::_gameState = Uninitialized;
sf::RenderWindow Game::_mainWindow;
有没有人知道是什么原因造成的,或者如何修复?我对SFML完全陌生,所以我不知道该做什么。
谢谢,Zuve制作一个最小的可编译示例来显示错误。如果您省略了一行,那么应用程序就可以工作,但这并不意味着该行就是问题所在。调试器如何说明崩溃的位置和原因?在我看来,最好使用
main
(或其他init函数)中的构造函数创建一个sf::RenderWindow
的本地实例,并将指针传递给其他需要它的函数,如Game::GameLoop
。另外,试着在没有第三个参数的情况下运行sf::VideoMode
,只保留分辨率,看看这是否有帮助。