C & C++/SFML

SFML 강좌 1 - SFML 설명 및 설치 (비주얼 스튜디오 2019)

KALILIVE 2022. 3. 1. 19:53
반응형

logo

SFML이란?

SFML 은 멀티미디어 API로 시스템, 윈도우, 그래픽, 오디오, 네트워크에 대한 모듈을 제공하는 라이브러리이다.

원래는 C와 .Net용으로 개발되었으나 현재 점차 Java, Ruby, Python, Go 등 다양한 언어를 지원하고 있다.

또한 Windows, Linux, macOS, 안드로이드, iOS 등 대부분의 OS에서 구동이 가능하다.

 

멀티미디어 라이브러리로 오디오, 그래픽을 목적으로 주로 사용한다.

2007년에 공개된 라이브러리지만 아직 자료가 많이 없는 점이 단점이지만

  • 크로스 플랫폼 라이브러리
  • 다양한 언어 지원 (C & C++ ,Java ,Python etc...)
  • 낮은 진입장벽?

등의 장점이 매우 매력적이라 점차 자료가 쌓아지면 유용한 라이브러리가 될 것이다.

또한 공식 사이트에서 강좌를 지원하고 있으니 쉽게 접근할 수 있다.

https://www.sfml-dev.org/learn.php (참조)

 

Learn (SFML)

 

www.sfml-dev.org

특히 나는 OpenCV를 배우면서 사운드 관련한 함수를 사용하고 싶었지만 OpenCV는 영상 전문 라이브러리라

음향 관련된 모듈이 없다. 그러므로 SFML은 음향 관련 모듈도 지원하고 있으니 OpenCV처럼 영상에 특화된 것은

아니지만 보다 다양한 기능을 가지고 있다.

 

 


설치방법

SFML홈페이지에 들어가면 모두 제공해 준다. 

링크를 타고 들어가든 검색을 하고 들어가면 OS 별 bit별 라이브러리 파일을 지원해 준다.

만약 소스코드가 필요하면 소스코드를 받을 수도 있다.

https://www.sfml-dev.org/download.php

 

 

Download (SFML)

 

www.sfml-dev.org

시스템 환경

  • OS : Windows 10 Home 64bit
  • IDE : Microsoft Visual Studio Community 2019

위 환경이므로 

Visual C++ 15 (2017) - 64-bit을 다운로드하였다.

각자 본인의 개발 환경에 맞추어 알맞은 버전을 다운로드하면 된다.

다운로드한 뒤 압축을 풀어 적당한 위치에 라이브러리를 저장해 주자.

 

나 같은 경우 D드라이브에 저장하였다. 저장 위치에 따라 다음 설정을 알아서 바꿔주자.

이제 비주얼 스튜디오에서 프로젝트를 생성한 뒤 main.cpp 파일을 하나 만든 뒤 

프로젝트 - <프로젝트 이름> 속성을 들어가면 아래와 같은 모습이 나올 것이다.

속성 페이지

좌측 상단에 있는 구성을 클릭해서 모든 구성으로 바꿔준다.

구성 속성 - C/C++ - 일반 - 추가 포함 디렉터리에 SFML의 include위치를 입력한다.

구성 속성 - 링커 - 일반 - 추가 라이브러리 디렉터리에 SFML의 lib 폴더를 저장한다.

구성 속성 - 링커 - 입력 - 추가 종속성을 클릭하면 아래와 같이 편집이 나타난다 클릭해 주자 

나타나는 빈창에 아래를 복사해서 입력한 뒤 확인 버튼을 누르면 입력이 완료된다.

sfml-main-d.lib;sfml-graphics-d.lib;sfml-window-d.lib;sfml-system-d.lib;sfml-audio-d.lib;sfml-network-d.lib

"sfml-xxx-d.lib"은 Debug용 "sfml-xxx.lib"는 Release용이다. 여기서는 d가 붙어있으니 디버깅용으로 사용된다.

릴리즈 용과 디버깅용을 잘못 사용하면 충돌이 발생하니 주의합시다

 

SFML 폴더 안 bin풀더안에 있는 파일들을 프로젝트가 위치한 폴더로 이동시켜 줍니다.

그리고 스튜디오 오른쪽에 있는 솔루션 탐색기에서 모든 파일 표시를 클릭해 각종. dll파일들이 있는지 확인한 뒤

모두 프로젝트에 포함해 줍시다.

그리고 아래 예제를 실행하여 SFML이 정상적으로 작동하는 확인 해봅시다.

#include <SFML/Graphics.hpp>

int main()
{
    sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);   

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

정상적으로 작동하면 초록원윈도우 창이 띄어질 것입니다.


#Note 

2022-03-01 작성

2022-03-02 OpenCV와 비교해 장점 소개 추가

반응형

'C & C++ > SFML' 카테고리의 다른 글

SFML 강좌 2 - Window 생성🔨  (0) 2022.03.07