【发布时间】:2014-12-28 23:05:26
【问题描述】:
我已经开始使用 SFML 库为大学课程创建图形战舰游戏,目前我正在创建 4 个矩形来创建窗口周围的边框(如果有更简单的方法,请告诉我,但我想继续4个矩形的想法)
我的问题是我将第一个矩形绘制到屏幕上并对其进行调试,它工作正常,但是我绘制了第二个矩形并引发以下错误
Unhandled exception at 0x00656A0E (sfml-graphics-d-2.dll) in Battleships.exe: 0xC0000005: Access violation reading location 0x00000004
这是我的代码:
矩形被称为 a 和 b(抱歉命名混乱)
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
int main()
{
sf::RenderWindow menu(sf::VideoMode(800, 600), "SFML works!");
sf::RectangleShape a(sf::Vector2f(800, 20));
a.setFillColor(sf::Color::White);
sf::RectangleShape b(sf::Vector2f(20, 600));
b.setFillColor(sf::Color::White);
sf::Font font;
if(!font.loadFromFile("arial.ttf"))
{
std::cout << "ERROR: Cannot load font" << std::endl;
}
sf::Text text("TEST", font, 80);
text.setPosition(sf::Vector2f(400/2.0f,300/2.0f));
text.setColor(sf::Color::White);
menu.clear();
menu.draw(a);
menu.draw(b);
menu.display();
}
【问题讨论】:
-
如果找不到文件,是的,您会显示错误。但随后您的代码继续运行,就好像没有错误一样。
-
您在使用 Visual Studio 吗?如果可以,请在“sf::Text text("TEST", font, 80);" 行设置一个断点并检查字体是否等于任何东西,在我看来您正在尝试使用尚未初始化的字体