반응형
Audio module | 음향, 스트리밍 (음악 또는 커스텀된 소스), 녹음, 사운드 공간화 |
Graphics module | 2D 그래픽 모듈 : 텍스트, 도형, 스프라이트(Sprites) 등을 지원한다. |
Network module | Socket을 이용해 커뮤니케이션, 유틸리티 그리고 하이레벨 네트워크 프로토콜(HTTP, FTP)을 지원한다. |
System module | SFML의 모듈을 이용해 각종 유틸리티들을 정의한다. |
Window module | OpenGL에서 Window를 지원하고 입력에 관한 이벤트를 제공한다. |
SFML에서 윈도우 창을 다루는 모듈은 Window module이므로 해당 해더 파일을 가져온다.
#include <SFML/Window.hpp>
윈도우창 생성
SFML의 윈도우는 sf::Window로 정의되어 있다.
아래 코드로 윈도우창을 생성하고 열어보자.
#include <SFML/Window.hpp>
int main(void)
{
sf::Window window(sf::VideoMode(800, 600), "My window");
return 0;
}
위 코드를 실행하면 잠깐 윈도우창이 생성되었다가 사라질 것이다.
왜냐하면 위 명령어는 윈도우창을 생성하는 기능만 있을 뿐 유지하지 않기 때문에 생성한 뒤 return으로 넘어가 프로그램이 종료된다.
그럼 이제 윈도우 창을 유지하기 위한 명령어를 작성해 보자
#include <SFML/Window.hpp>
#include <stdio.h>
int main()
{
sf::Window window(sf::VideoMode(800, 600), "My window");
unsigned long long n = 0;
// 윈도우 창이 열여있을때까지 윈도우를 유지
while (window.isOpen())
{
//loop문의 반복 되는 동안 모든 윈도우의 이벤트를 체크한다.
sf::Event event;
while (window.pollEvent(event))
{
printf("%llu\n",n);
n++;
// 윈도우 창이 닫히는 이벤트가 발생하면 윈도우 창을 닫는다.
if (event.type == sf::Event::Closed)
window.close();
}
}
return 0;
}
반복문을 이용해 Window가 열여 있을 때까지 반복문을 이용하고 윈도우가 열여 있을 때
발생하는 이벤트를 확인해서 만약 윈도우창의 X 버튼을 누르는 이벤트가 발생하면 window창을
지우는 방법으로 윈도우 창을 유지한다.
움직일 때마다 포착되는 이벤트 횟수를 n이란 변수에 저장해서 출력하므로
움직일 때마다 이벤트가 포착되는 것을 가시적으로 확인할 수 있다.
추가적으로 sf::Window는 3번째 인자를 선택적으로 허용하고 있다.
만약 원하는 스타일이 있으면 추가적으로 3번째 인자를 통해 받고있는데
주로 쓰이는 스타일은
sf::Style::None | 아무런 스타일을 주지 않는다(공백화면을 제공) 이 스타일은 다른 아무것과도 상호작용할 수없다. |
sf::Style::Titlebar | 타이틀바를 가진 윈도우창을 생성한다. |
sf::Style::Resize | 윈도우창의 크기를 조절할 수 있고 전채화면 버튼이 보인다. |
sf::Style::Close | 닫기 버튼이 있는 윈도우창 스타일로 변경한다. |
sf::Style::Fullscreen | 윈도우가 풀스크린 모드가 된다. 이 스타일은 다른 아무것도 상호작용할 수 없다. 유효한 비디오 모드가 필요함 |
sf::Style::Default | 기본 스타일 Titlebar,Resize,Close 3개의 스타일을 기본으로 설정하고 있다. |
#include <SFML/Window.hpp>
int main(void)
{
sf::Window window(sf::VideoMode(800, 600), "My window",sf::Style::Default);
// 윈도우 창이 열여있을때까지 윈도우를 유지
while (window.isOpen())
{
//loop문의 반복 되는 동안 모든 윈도우의 이벤트를 체크한다.
sf::Event event;
while (window.pollEvent(event))
{
// 윈도우 창이 닫히는 이벤트가 발생하면 윈도우 창을 닫는다.
if (event.type == sf::Event::Closed)
window.close();
}
}
return 0;
}
window를 선언할때 3번째 인자로 위처럼 설정하면 윈도우의 스타일을 설정할 수 있다.
이런 방법으로 윈도우를 우리가 흔히 사용하는 것처럼 유지할 수 있다.
다음 강좌 이번에 살짝 다뤄봤던 이벤트에 대해서 설명하겠습니다.
#Note
2022-03-07 작성 완료
반응형
'C & C++ > SFML' 카테고리의 다른 글
SFML 강좌 1 - SFML 설명 및 설치 (비주얼 스튜디오 2019) (3) | 2022.03.01 |
---|