C++ SFML图形在窗口中绘制纹理-黑屏

C++ SFML图形在窗口中绘制纹理-黑屏,c++,sfml,C++,Sfml,我只是试着写一个国际象棋引擎,对我来说重要的是我得到了一个很好的游戏视觉表现。我尝试在Visual Studio项目中实现该代码-问题是该程序只显示一个黑屏,而不是我加载的纹理 我的代码如下: #include <SFML/Graphics.hpp> #include <time.h> using namespace sf; int main(){ RenderWindow window(VideoMode(1000, 1000), "MattseChess!

我只是试着写一个国际象棋引擎,对我来说重要的是我得到了一个很好的游戏视觉表现。我尝试在Visual Studio项目中实现该代码-问题是该程序只显示一个黑屏,而不是我加载的纹理

我的代码如下:

#include <SFML/Graphics.hpp>
#include <time.h>
using namespace sf;

int main(){

    RenderWindow window(VideoMode(1000, 1000), "MattseChess!");

    Texture t1;
    t1.loadFromFile("images/board.png");
    Sprite s(t1);

    while (window.isOpen())
    {
        Event e;

        while (window.pollEvent(e)) {

            if (e.type == Event::Closed)
                window.close();
    //Draw
            window.clear();
            window.draw(s);
            window.display();
        }
    }

    return 0;
}
#包括
#包括
使用名称空间sf;
int main(){
RenderWindow窗口(视频模式(10001000),“MattseChess!”);
纹理t1;
t1.loadFromFile(“images/board.png”);
雪碧s(t1);
while(window.isOpen())
{
事件e;
while(window.pollEvent(e)){
如果(e.type==Event::Closed)
window.close();
//画
window.clear();
窗口。绘制(s);
window.display();
}
}
返回0;
}

你知道我做错了什么吗?

那代码行得通。我很确定您没有将board.png放入执行路径中的images目录

确保此图像可用:

t1.loadFromFile("images/board.png");

那代码行得通。我很确定您没有将board.png放入执行路径中的images目录

确保此图像可用:

t1.loadFromFile("images/board.png");

确保将绘图代码置于事件循环之外。否则,只有在发生某些事件(如光标移动)时才进行绘图。

确保将绘图代码放在事件循环之外。否则,只有在发生某些事件(如光标移动)时才进行绘制。

确实如此!我的一个想法是程序实际上加载了纹理,但是把它放在了一个非常奇怪的窗口“外面”,所以我看不到它。可能吗?不可能。SFML将其放在窗口的0/0上。这是一个PNG,第一个黑色棋盘格区域是黑色的,填充了整个屏幕?绝对是!我的一个想法是程序实际上加载了纹理,但是把它放在了一个非常奇怪的窗口“外面”,所以我看不到它。可能吗?不可能。SFML将其放在窗口的0/0上。这是一个PNG,第一个黑色棋盘格区域是黑色的,填充整个屏幕?它仍然不工作,只是尝试了一下。可能是因为它不适用于Visual Studio,或者您需要一些特殊的编译设置?我是通过x64而不是x86编译的,因为.dll也是用x64编译的,这在以前抛出了一个错误。现在,到目前为止,没有编译错误或其他任何事情,只是一个干净的黑色窗口。它仍然不工作,只是尝试了一下。可能是因为它不适用于Visual Studio,或者您需要一些特殊的编译设置?我是通过x64而不是x86编译的,因为.dll也是用x64编译的,这在以前抛出了一个错误。现在,到目前为止,没有编译错误或其他任何事情,只有一个干净的黑色窗口。