在sfml中加载纹理
Loading a texture in sfml
我开始学习SFML,我想创建精灵从文件中加载图像,所以我只是遵循教程并做了显而易见的事情。
sf::Texture texture;
texture.loadFromFile("C:image.png");
sf::Sprite sprite;
sprite.setTexture(texture);
window.draw(sprite);
当我启动程序时,我只是得到一个白屏和"在itsprgps.exe中的0x50CEDEDA (msvcr110.dll)处未处理异常:0xC0000005:访问违规读取位置0x00524000.",控制台也充满了随机符号。我试图寻找一些信息,但我只是发现"如果纹理被破坏或移动到内存的其他地方,精灵最终以无效的纹理指针",这可能是显而易见的一些人,但我在这方面是新的,他们没有给出任何工作的例子。
我正在使用SFML 2.1和Visual Studio 2013
编辑:这是我的代码样本没有所有的形状之前,我试图加载纹理:
<标题>包括"stdafx.h"h1> 还意识到另一件事…我也不能加载字体,它发生了完全相同的事情,我想我知道为什么。当我开始这个项目时,我添加了用于发布而不是调试的库("sfml-system.lib;sfml-main.lib;而不是" sml -system-d.lib; sml -main-d.lib; sml -graphics-d.lib; sml -window-d.lib;")所以我认为这可能就是问题所在,所以我试图解决它,但我遇到了另一种问题。长话短说:我尝试了调试和发布的适当配置,我得到了不同的错误,首先,我缺少一个MSVCR110D.dll,所以出于好奇只是下载了它并把它放在调试文件夹中,现在我得到0xc000007b。我尝试了不同的配置,唯一似乎有效的是调试与发布库(除了当试图加载纹理或字体到目前为止)。
标题>将("C:image.png");
改为("C:\image.png");
很可能是单个反斜杠导致了这个问题,因为它是一个转义字符。
此外,您应该检查从loadFromFile
返回的值,以确保它是成功的
我建议你把负责加载纹理的代码移出循环,并检查它的返回值。
即使这不能解决问题,您也可以遇到或排除与多个加载图像相关的任何问题。
代码:int main()
{
sf::RenderWindow window(sf::VideoMode(557, 500), "My window");
sf::Texture texture;
if(!texture.loadFromFile("C:roads.png"))
{
std::cerr << "failed to load image" << std::endl;
exit(1);
}
sf::Sprite sprite;
sprite.setTexture(texture);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear(sf::Color(255, 255, 255));
window.draw(sprite);
window.display();
}
}
看来您需要为您的Visual studio版本安装Visual c++ Redistributable,您可以在microsoft的网站上下载。
当在"链接器"中输入"在调试模式下配置,确保添加"-d"附加文件!
例子:sfml-system-d.lib
- 无法将图像加载到纹理矢量 (SFML)
- SFML 纹理无法正确加载
- 在 OpenGL 中加载纹理C++
- 从文件问题加载纹理 Android NDK 和 OpenGL
- 是什么导致 glTexSubImage1D() - 加载纹理时在此示例中出现GL_INVALID_VALUE错误?
- 如何使用 openGL 在屏幕上显示加载的纹理
- Assimp 无法加载除 FBX 的漫反射纹理之外的其他纹理
- Directx11 加载纹理
- 如何将多个纹理加载到片段着色器中
- 如何将硬编码图像加载到 OpenGL 纹理中
- 为什么我的纹理加载到OpenGL中,未正确映射
- 如何使用 emscripten 使用 SDL 将纹理加载到 WebAssembly 项目中
- DirectX 11 将多个纹理加载到 Texture2DArray 中
- 将PNG作为纹理加载并将其结合到球体上
- OpenGL纹理加载困境
- OpenGL纹理加载需要土壤帮助
- Vala/杂波纹理加载线程
- 用于异步纹理加载的设施
- SFML中的白色正方形,但纹理加载良好
- OpenGL多重纹理加载错误