2016-09-14 8 views
0

SFML 2.3을 사용하여 게임을 제작 중이며 매우 이상한 점이 있습니다. 두 개의 다른 텍스처 파일 인 .png가 있지만 그 중 하나는 그려지지 않습니다.SFML과 텍스처로 게임을 작성하면 그릴 수 없게됩니다.

오류 메시지가 표시되지 않습니다. 어떤 이유로 TextureA는 정상적으로 작동하지만 TextureB는 그려지지 않습니다.

나는 코드가 정확한지, 대문자로 검사되었는지, 동일한 폴더에 둘 다 가지고 있는지, 모든 것을 시도했는지 확인했습니다. TextureA 대신 TextureA를 입력 해 보았습니다. TextureA는 잘 그렸습니다. 나는 문제가 .png 파일 자체와 있을지도 모른다라고 생각한다. 그러나 나는 그것이 무엇인지에 관해 계산할 수 없다.

미리 감사드립니다.

+0

http://www.sfml-dev.org/tutorials/2.4/graphics-sprite.php –

+2

질문에 코드를 게시하십시오. 최소한의 예제를 참조하십시오 - [SSCCE] (http://sscce.org/) –

+0

참조하시기 바랍니다 [mcve] (http://stackoverflow.com/help/mcve) –

답변

2

텍스처와 SFML이있는 캐치가 있습니다. Sprites는 텍스처 자원의 소유자가 아니라고 가정합니다. 그렇게함으로써 그릴 때 텍스처가 여전히 존재하는지 확인해야합니다. 이 코드를 여기에서보십시오 :

sf::Sprite makeSprite() { 
    sf::Texture tex; 
    tex.loadFromFile("someTexture.png"); 

    sf::Sprite sprite; 

    sprite.setTexture(tex); 

    // You indeed return the sprite, but tex is going out of scope here. 
    return sprite; 
} 

// further code will draw the sprite as a white square. 

대신,로드 된 텍스처 목록에 텍스처를 유지하십시오. 벡터를 어딘가에 유지하거나 단순히 텍스처의 정적 변수를 함수 makeSprite에 넣을 수 있습니다. 을 권장하지 않습니다.은 정적 또는 전역 변수를 사용하기 때문에 처음에는 설계 결함이 있음을 나타내지 만 여전히 유효한 솔루션입니다.

+0

idk 왜보십시오하지만 그 추가 작동합니다. 고마워요! – Zbadrawy

+2

@Zbadrawy 정말 왜 추가했는지 모른 채 가고 싶니? – user2296177

관련 문제