C++でSFMLというライブラリを使って簡単なゲームを作っていきます。
SFMLでは、画像が白い四角系になる(white square problem)問題が良く起こるようです。
私もこれに困ったので、今回記事にします。
解決方法
画像ファイルをクラスで取得しておくことで、解決
ストライプに座標設定する際に、このクラスを呼び出し、座標と一緒に入力することで
white square probremが解決しました。
以下コード
//ベースの画像ファイル取得用クラスコード
class TextureManager {
public:
TextureManager(const std::string& filename) {
if (!m_texture.loadFromFile(filename)) {
std::cerr << "Failed to load texture: " << filename << std::endl;
}
}
sf::Texture& getTexture() {
return m_texture;
}
private:
sf::Texture m_texture;
};
問題
何が起きたかというと、2次元配列に0と1だけ入力した
{
0,1,0,0
1,1,0,0
}
のようなファイルを作成したのですが、末尾部分だけ正常に画像が表示され、他は全て真っ白の四角が表示されるという問題が起こりました。
今回、一つのマップチップファイル(32*32ピクセル画像の集合体).pngを使用しました。
文字列が「0」の場合はファイル内座標[0,0]そして「1」の場合は座標[32,0]の[32,32]ピクセルをテクスチャとして利用することとしました。
そして、「白い四角が表示される」のはテクスチャを保持することが出来ていないことが原因だったみたいです。
なぜ保持されないかは、うまく説明できないので省きます
Commentaires