-
SFML/ 사용자 데이터 스트림활동 기록 😵💫/SFML 테트리스 2023. 2. 4. 02:16
SFML에는 이미지, 글꼴, 사운드 등 여러 리소스 클래스가 있습니다.
대부분의 프로그램에서 이러한 리소스는 해당 loadFromFile기능의 도움을 받아 파일에서 로드됩니다
입력 스트림
sf::InputStream 클래스는 네가지 가상함수를 선언
class InputStream { public : virtual ~InputStream() {} virtual Int64 read(void* data, Int64 size) = 0; virtual Int64 seek(Int64 position) = 0; virtual Int64 tell() = 0; virtual Int64 getSize() = 0; };
read 스트림에서 크기바이트의 데이터 추출하여 제공된 데이터 주소에 복사
seek 스트림에서 현재 읽기 위치 변경
tell 스트림에서 현재 읽기 위치 반환하거나 오류시 -1 반환
getSize 스트림에 포함된 데이터의 총 크기 반환하거나 오류시 -1 반환
사용자정의스트림 클래스
InputStream 사용 인스턴스화하고 로드하려는 개체의 loadFromStream 함수에 전달
sf::FileStream stream; stream.open("image.png"); sf::Texture texture; texture.loadFromStream(stream);
어떻게 쓰는건지 모르겟어서 직접 해보려는데 어렵다...
#ifdef SFML_FILEINPUTSTREAM_HPP #endif SFML_FILEINPUTSTREAM_HPP #include <SFML/Config.hpp> #include <SFML/System/Export.hpp> #include <SFML/System/InputStream.hpp> #include <SFML/System/NonCopyable.hpp> #include <cstdio> #include <string> #ifdef SFML_SYSTEM_ANDROID namespace sf { namespace priv { class SFML_SYSTEM_ARI ResourceStream; } } #endif using namespace sf; //SFML 2.5.1 을 설치해줘야 실행가능 class SFML_SYSTEM_API FileInputStream : public InputStream, NonCopyable { public: FileInputStream(); virtual ~FileInputStream(); bool open(const std::string& filename); virtual Int64 read(void* data, Int64 size); virtual Int64 seek(Int64 position); virtual Int64 tell(); virtual Int64 getSize(); private: #ifdef SFML_SYSTEM_ANDROID priv::ResourceStream* m_file; #else std::FILE* m_file; #endif };
도 해봤는데 오류다..
파일을 열고 ?그 안에 입력을 하는거 같은데
사용안할것 같으니까 그만알아봐야겠다.....
'활동 기록 😵💫 > SFML 테트리스' 카테고리의 다른 글
SFML / 윈도우 관리, 이벤트 튜토리얼 (3) 2023.02.05 SFML / 기본윈도우 (1) 2023.02.04 SFML 튜토리얼(시간, 스레드) (4) 2023.01.23 SFML / 텍스트그리기(폰트) (4) 2023.01.19 C++에 SFML 적용하기 (2) 2023.01.18