스프라이트는 SFML에서 흰색 사각형입니다.

파리 디딘 라히 모프

모든 종류의 자산에 대한 포인터와 ResourceHolder라는 ID를 보유하는 템플릿을 만들었지 만이 템플릿의 인스턴스에서 텍스처에 대한 포인터를 사용하여 스프라이트에 텍스처를로드하면 흰색 사각형이됩니다. ResourceHolder.hpp의 코드는 다음과 같습니다.

#ifndef RESOURCEEHOLDER_H
#define RESOURCEHOLDER_H
#include "TexturesId.h"
#include "assert.h"
#include <SFML/Graphics.hpp>
#include <stdexcept>
#include <memory>
#include <string>
#include <map>
using namespace sf;
template<typename Resource,typename Identifier>

class ResourceHolder
{
    public:
        void load(Identifier id,const std::string &filename);
        Resource& get(Identifier id);
        const Resource& get(Identifier id) const;
    protected:

    private:
        std::map<Identifier,std::unique_ptr<Resource>> mResourceMap;
};

#endif // TEXTUREHOLDER_H

그런 다음 ResourceHolder.cpp의 코드

#include "ResourceHolder.h"
using namespace sf;

template<typename Resource,typename Identifier>
void ResourceHolder<Resource,Identifier>::load(Identifier id,const std::string& filename)
{
    std::unique_ptr<Resource> resource(new Resource());
    if(!(resource->loadFromFile(filename)))
       {
           throw std::runtime_error("TextureHolder failed to load " + filename);
       }
    auto inserted=mResourceMap.insert(std::make_pair(id,std::move(resource)));
    assert(inserted.second);
}
template<typename Resource,typename Identifier>
Resource& ResourceHolder<Resource,Identifier>::get(Identifier id)
{
    auto found=mResourceMap.find(id);
    assert(found!=mResourceMap.end());
    return *found->second;
}
template<typename Resource,typename Identifier>
const Resource& ResourceHolder<Resource,Identifier>::get(Identifier id) const
{
    auto found=mResourceMap.find(id);
    assert(found!=mResourceMap.end());
    return *found->second;
}
template class ResourceHolder<Texture,Textures::ID>;

TextureId.h :

#ifndef TEXTURESID_H_INCLUDED
#define TEXTURESID_H_INCLUDED
namespace Textures
{
    enum ID{Landsape,Airplane,Missile};
}

#endif // TEXTURESID_H_INCLUDED

마지막으로 Game.cpp에서

Game::Game(int x,int y,std::string &Name)
:window(VideoMode(x,y),Name),texture(),
mPlayer()
{
    ResourceHolder<Texture,Textures::ID> th;
    th.load(Textures::ID::Airplane,"plane.png");
    Texture texture=th.get(Textures::ID::Airplane);
    mPlayer.setTexture(texture);
    mPlayer.setPosition(window.getSize().x/2,window.getSize().y/2);
}
루카스

문제가있는 코드는 Game.cpp의 코드입니다.

Game::Game(int x,int y,std::string &Name)
:window(VideoMode(x,y),Name),texture(),
mPlayer()
{
    ResourceHolder<Texture,Textures::ID> th;
    th.load(Textures::ID::Airplane,"plane.png");
    Texture texture=th.get(Textures::ID::Airplane);
    mPlayer.setTexture(texture);
    mPlayer.setPosition(window.getSize().x/2,window.getSize().y/2);
}

ResourceHolder뿐만 아니라 Texture전용의 로컬 스코프 내에 존재 Game생성자. 생성자가 실행되면 rh둘 다 texture범위를 벗어나고 텍스처에 대한 스프라이트의 참조가 무효화되어 흰색 사각형 문제가 발생 합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

흰색 사각형 SFML

분류에서Dev

SFML이 텍스처 대신 흰색 사각형을로드하는 이유는 무엇입니까?

분류에서Dev

Windows Picture Viewer에서 흰색이 흰색이 아닙니다.

분류에서Dev

cocos2d-x로 흰색 배경 레이어에 빨간색 사각형 스프라이트를 그리는 것이 왜 그렇게 어려운가요?

분류에서Dev

subscene에 흰색 사각형 라벨 자바 FX를 만드는

분류에서Dev

cv2.findContours는 검정색 배경에 흰색 사각형을 찾지 못합니다.

분류에서Dev

GTK3 폴더 이름 대화 상자가 흰색에 흰색입니다.

분류에서Dev

IE / Edge에서 옵션 텍스트 색상이 흰색입니다.

분류에서Dev

안드로이드 응용 프로그램에서-텍스트 선택을위한 커서는 흰색이고 잘라 내기, 복사, 붙여 넣기 옵션도 흰색이므로 보이지 않습니다.

분류에서Dev

스크램블 된 이미지에서 흰색 사각형 제외

분류에서Dev

Graphics 객체 (Java)에서 스크린 샷 위에 흰색 직사각형 추가

분류에서Dev

pgAdmin은 어두운 테마로 흰색에 흰색 개체 브라우저 텍스트를 표시합니다.

분류에서Dev

각 셀이 검은 색 또는 흰색 인 정사각형 행렬입니다. 최대 흰색 하위 제곱을 찾는 알고리즘 설계

분류에서Dev

클래스의 C ++ SFML 텍스처 및 스프라이트 (흰색 상자)

분류에서Dev

Phonegap Build, Firebase 사용시 알림 아이콘이 흰색 / 회색 정사각형입니다.

분류에서Dev

pgAdmin 4에서이 빈 흰색 상자는 무엇입니까?

분류에서Dev

SDL2 & Glew를 사용하여 OpenGL에서 간단한 흰색 사각형을 그리려고합니다. 검은 화면이 나타납니다.

분류에서Dev

내 ax.pcolormesh () 밀도 플롯에서 직사각형 흰색 프레임을 제거하는 방법은 무엇입니까?

분류에서Dev

Material-UI : Windows 브라우저에서 어두운 테마를 사용할 때 기본 선택은 흰색 배경에 흰색 텍스트가 있습니다.

분류에서Dev

좌표를 전달하여 체스 판에 흰색 사각형을 블릿

분류에서Dev

내 Wordpress 사이트의 바닥 글에있는 흰색 막대

분류에서Dev

OpenGL : 프로그램이 변형 된 사각형 대신 일반 흰색 사각형을 렌더링합니다.

분류에서Dev

일부 장소의 공백에 흰색 직사각형을 표시하는 Gvim

분류에서Dev

슬라이드에서 다른 슬라이드로 전환하는 동안 배경이 흰색 인 부트 스트랩 캐 러셀

분류에서Dev

Flutter Textformfield에서 입력 텍스트 색상을 검은 색에서 흰색으로 변경하는 방법

분류에서Dev

Oh My Zsh 사용자 지정 프롬프트에서 흰색 배경의 숫자는 무엇입니까?

분류에서Dev

이미지 / 매트릭스에 임의의 흰색 직사각형 / 배열 만들기

분류에서Dev

Chrome : Div는 중앙에 흰색 선이 있습니다.

분류에서Dev

opencv에서 흰색 쿼드를 검사하는 방법

Related 관련 기사

  1. 1

    흰색 사각형 SFML

  2. 2

    SFML이 텍스처 대신 흰색 사각형을로드하는 이유는 무엇입니까?

  3. 3

    Windows Picture Viewer에서 흰색이 흰색이 아닙니다.

  4. 4

    cocos2d-x로 흰색 배경 레이어에 빨간색 사각형 스프라이트를 그리는 것이 왜 그렇게 어려운가요?

  5. 5

    subscene에 흰색 사각형 라벨 자바 FX를 만드는

  6. 6

    cv2.findContours는 검정색 배경에 흰색 사각형을 찾지 못합니다.

  7. 7

    GTK3 폴더 이름 대화 상자가 흰색에 흰색입니다.

  8. 8

    IE / Edge에서 옵션 텍스트 색상이 흰색입니다.

  9. 9

    안드로이드 응용 프로그램에서-텍스트 선택을위한 커서는 흰색이고 잘라 내기, 복사, 붙여 넣기 옵션도 흰색이므로 보이지 않습니다.

  10. 10

    스크램블 된 이미지에서 흰색 사각형 제외

  11. 11

    Graphics 객체 (Java)에서 스크린 샷 위에 흰색 직사각형 추가

  12. 12

    pgAdmin은 어두운 테마로 흰색에 흰색 개체 브라우저 텍스트를 표시합니다.

  13. 13

    각 셀이 검은 색 또는 흰색 인 정사각형 행렬입니다. 최대 흰색 하위 제곱을 찾는 알고리즘 설계

  14. 14

    클래스의 C ++ SFML 텍스처 및 스프라이트 (흰색 상자)

  15. 15

    Phonegap Build, Firebase 사용시 알림 아이콘이 흰색 / 회색 정사각형입니다.

  16. 16

    pgAdmin 4에서이 빈 흰색 상자는 무엇입니까?

  17. 17

    SDL2 & Glew를 사용하여 OpenGL에서 간단한 흰색 사각형을 그리려고합니다. 검은 화면이 나타납니다.

  18. 18

    내 ax.pcolormesh () 밀도 플롯에서 직사각형 흰색 프레임을 제거하는 방법은 무엇입니까?

  19. 19

    Material-UI : Windows 브라우저에서 어두운 테마를 사용할 때 기본 선택은 흰색 배경에 흰색 텍스트가 있습니다.

  20. 20

    좌표를 전달하여 체스 판에 흰색 사각형을 블릿

  21. 21

    내 Wordpress 사이트의 바닥 글에있는 흰색 막대

  22. 22

    OpenGL : 프로그램이 변형 된 사각형 대신 일반 흰색 사각형을 렌더링합니다.

  23. 23

    일부 장소의 공백에 흰색 직사각형을 표시하는 Gvim

  24. 24

    슬라이드에서 다른 슬라이드로 전환하는 동안 배경이 흰색 인 부트 스트랩 캐 러셀

  25. 25

    Flutter Textformfield에서 입력 텍스트 색상을 검은 색에서 흰색으로 변경하는 방법

  26. 26

    Oh My Zsh 사용자 지정 프롬프트에서 흰색 배경의 숫자는 무엇입니까?

  27. 27

    이미지 / 매트릭스에 임의의 흰색 직사각형 / 배열 만들기

  28. 28

    Chrome : Div는 중앙에 흰색 선이 있습니다.

  29. 29

    opencv에서 흰색 쿼드를 검사하는 방법

뜨겁다태그

보관