C++ SFML纹理使用问题

C++ SFML纹理使用问题,c++,sfml,C++,Sfml,我想做一个瓷砖贴图,但是当我运行这个代码时,瓷砖变成白色,纹理有问题。我从sf::Texture引用中知道,纹理必须存在,以便精灵可以使用它。但我不知道如何使之成为可能。 代码如下: class Tile { private: sf::Sprite sprite; sf::Texture tex; public: Tile(int x, int y, sf::Texture tex) { this->tex = tex; this->sprite.setTextu

我想做一个瓷砖贴图,但是当我运行这个代码时,瓷砖变成白色,纹理有问题。我从sf::Texture引用中知道,纹理必须存在,以便精灵可以使用它。但我不知道如何使之成为可能。
代码如下:

class Tile
{
private:
sf::Sprite sprite;
sf::Texture tex;

public:
     Tile(int x, int y, sf::Texture tex)
    {
this->tex = tex;
this->sprite.setTexture(this->tex);
this->sprite.setPosition(x, y);

    }
    void render(sf::RenderWindow* target)
    {
    target->draw(this->sprite);
    }


class Tilemap
{
private:
Tile tiles[36][64];
sf::Texture tex[4];

public:
//const/dest
Tilemap()
{
this->tex[0].loadFromFile("Resources/Tilemap/Water/water1.png");

int x = -WIDTH+WIDTH/2;
int y = -HEIGTH/2;
for (int i = 0; i < 36; i++)
{
    for (int j = 0; j < 64; j++)
    {
        this->tiles[i][j] = Tile(x, y, this->tex[0]);
        x += 60;
    }
    y += 60;
    x = -WIDTH + WIDTH / 2;
}

}


render(sf::RenderWindow* target, sf::Vector2f pos)
{
for (int i = 0; i < 34; i++)
{
    for (int j = 0; j < 64; j++)
    {
        this->tiles[i][j].render(target);
    }
}
 };
 Tilemap map;
 map = Tilemap();
类平铺
{
私人:
雪碧雪碧;
sf::纹理tex;
公众:
平铺(整数x,整数y,sf::纹理tex)
{
这->tex=tex;
此->sprite.setTexture(此->tex);
此->精灵设置位置(x,y);
}
无效渲染(sf::RenderWindow*目标)
{
目标->绘制(此->精灵);
}
类Tilemap
{
私人:
瓷砖[36][64];;
sf::纹理tex[4];
公众:
//常数/目的地
Tilemap()
{
this->tex[0].loadFromFile(“Resources/Tilemap/Water/water1.png”);
int x=-宽度+宽度/2;
int y=-高度/2;
对于(int i=0;i<36;i++)
{
对于(int j=0;j<64;j++)
{
this->tiles[i][j]=Tile(x,y,this->tex[0]);
x+=60;
}
y+=60;
x=-宽度+宽度/2;
}
}
渲染(sf::RenderWindow*目标,sf::Vector2f位置)
{
对于(int i=0;i<34;i++)
{
对于(int j=0;j<64;j++)
{
此->平铺[i][j]。渲染(目标);
}
}
};
Tilemap地图;
map=Tilemap();

提前感谢您的回答:)

我已经自己解决了。每个磁贴都有一个
sf::Texture tex
,每次我需要更改它时,我只需从不同的文件重新加载它。

我已经自己解决了。每个磁贴都有一个
sf::Texture tex
,每次我需要更改它时,我只需加载它同样来自不同的文件。

您确定程序可以在
的“Resources/Tilemap/Water/water1.png”找到纹理吗?
尝试给它一个完整的系统路径(例如
“C:/user/Resources/Tilemap/Water/water1.png”
看看会发生什么。你也可以检查
loadFromFile
的返回值。如果图像加载失败,它将返回false。我已经这样做了,加载没有问题。你似乎从来没有初始化过
sf::Texture tex[4];
。我认为当我只使用tex[0]我只需要初始化一个。你确定程序可以在
“Resources/Tilemap/Water/water1.png”
找到纹理吗?尝试给它一个完整的系统路径(例如
“C:/user/Resources/Tilemap/Water/water1.png”
看看会发生什么。你也可以检查
loadFromFile
的返回值。如果图像加载失败,它将返回false。我已经这样做了,加载没有问题。你似乎从来没有初始化过
sf::Texture tex[4];
。我想当我只使用tex[0]时,我只需要初始化一个。