私はmedia
(sf::Sprite
)とmediaTexture
(sf::Texture
)を格納するDBObjectを持っています。これらのdbobjectはstd::vector
に格納されているSFMLの白い四角ですが、テクスチャが細かく読み込まれています
void DBObject::loadMedia() {
myStream mediaStream(mediaPath);
mediaTexture.loadFromStream(mediaStream);
media.setTexture(mediaTexture);
mediaInit = true;
}
:これは私のDBObject::loadMedia()
機能です。
スプライトをディスプレイに描画しようとすると、それは完全に白くなり、明らかにこれは範囲外のテクスチャからのものです。しかし、私はDBObjectのテクスチャを定義するので、それはオブジェクトの寿命を持っている必要があります...右か?
しかし、私がmain()関数で新しいスプライトを作成してnewSprite.setTexture(DBObj.mediaTexture)
を実行すると、それはうまく表示されるので、テクスチャ自体はうまくロードされていますが、スプライトに何かが起きています。
どうすれば変更できますか?常にスプライトをテクスチャで更新し続けますか? – TheAbelo2
いいえ、コピーしたときに、カスタムコピーコンストラクタを使用します。 – Hiura
ありがとう、私はカスタムコピーを追加し、今は正常に動作します。 :) – TheAbelo2