[英]White square in SFML, but texture is loading fine
我有一個DBObject,用於存儲media
( sf::Sprite
)和mediaTexture
( sf::Texture
)。 這是我的DBObject::loadMedia()
函數:
void DBObject::loadMedia() {
myStream mediaStream(mediaPath);
mediaTexture.loadFromStream(mediaStream);
media.setTexture(mediaTexture);
mediaInit = true;
}
這些DBObject存儲在std::vector
。
當我嘗試將精靈繪制到顯示器上時,它是完全白色的,顯然這是因為紋理超出了范圍。 但是我在DBObject中定義了紋理,因此它應該具有對象的生命周期...對嗎?
但是,當我在main()函數中創建一個NEW Sprite並執行newSprite.setTexture(DBObj.mediaTexture)
,它顯示得很好,因此紋理本身正在正常加載,但是該Sprite發生了某些事情。
這稱為白方塊問題 。
基本上,在某些時候,您的對象已被復制,但是復制構造函數不會將復制的Sprite紋理更新為使用復制的紋理,並且原始紋理已被破壞,因此復制的Sprite不再具有有效的紋理。 例如,當您的std::vector
需要分配更多的內存並四處移動/復制內容時,就會發生這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.