簡體   English   中英

SFML中為白色方塊,但紋理加載良好

[英]White square in SFML, but texture is loading fine

我有一個DBObject,用於存儲mediasf::Sprite )和mediaTexturesf::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM