gpt4 book ai didi

c++ - 如何不在exe文件夹中包含纹理

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:58 25 4
gpt4 key购买 nike

我正在为学校做一些 sfml 项目,老师只想要 .exe 程序。我使用的是 Visual Studio 2017。在这个项目中,我使用的是 .jpg 文件中的纹理

sf::RenderWindow window(sf::VideoMode(640, 480, 32), "Kurs SFML ");

sf::Texture texture;
texture.loadFromFile("wood.jpg");

sf::Sprite pic;
pic.setTexture(texture);

while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();

}
window.clear();
window.draw(pic);
window.display();

此文件 (wood.jpg) 需要与项目位于同一文件夹中才能显示此纹理,否则它只会显示黑屏。当我检查另一个文件夹中的 .exe 程序时,它也需要这个文件在这个文件夹中,否则 .exe 显示黑屏。但是我的老师只想要没有任何文件夹的 .exe 文件。那么是否可以做一些事情来不包含此文件 (wood.jpg) 但在 .exe 中显示纹理?

最佳答案

将您的纹理嵌入到您的可执行文件中。

一个简单的解决方案是编写一个小工具来读取文件并使用包含原始字节的 constexpr std::array 写出 C++ 源文件。然后从您链接到可执行文件的那个变量(SFML 具有从内存加载资源的函数)加载您的纹理。

编写这样的工具不应超过 10-20 行代码。

关于c++ - 如何不在exe文件夹中包含纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com