【问题标题】:SFML graphics Draw Texture in Window- Black ScreenSFML 图形在窗口中绘制纹理 - 黑屏
【发布时间】:2017-12-08 09:56:10
【问题描述】:

我只是尝试编写一个国际象棋引擎,对我来说重要的是我获得了一个漂亮的游戏视觉表示。我试图在 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;
}

你知道我做错了什么吗?

【问题讨论】:

    标签: c++ sfml


    【解决方案1】:

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

    【讨论】:

    • 还是不行,试了一下。可能是它不适用于 Visual Studio,或者您需要一些特殊的编译设置?我是通过 x64 而不是 x86 编译的,因为 .dll 也是使用 x64 编译的,这在之前引发了错误。现在,到目前为止没有编译错误或其他任何东西,只是一个干净的黑色窗口。
    【解决方案2】:

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

    确保此图片可用:

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

    【讨论】:

    • 绝对是!我的一个想法是程序实际上加载了纹理,但是把它放在窗口“外面”的一个非常奇怪的地方,所以我看不到它。这可能吗?
    • 没办法。 SFML 将它放在窗口的 0/0 上。它是一个 PNG,第一个黑色棋盘格字段是黑色的并填满整个屏幕?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    相关资源
    最近更新 更多