SDL2의 간단한 소개와 개념에 대해서는 이전에 다른 글을 통해 다룬적이 있었다.
SDL_INIT_TIMER |
타이머 서브시스템 |
SDL_INIT_AUDIO |
오디오 서브시스템 |
SDL_INIT_VIDEO |
비디오 서브시스템 |
SDL_INIT_JOYSTICK |
조이스틱 서브시스템 |
SDL_INIT_HAPTIC |
햅틱 (force feedback) 서브시스템 |
SDL_INIT_GAMECONTROLLER |
게임 컨트롤러 서브시스템 |
SDL_INIT_EVENTS |
이벤트 서브시스템 |
SDL_INIT_EVERYTHING |
위의 모든 서브시스템 |
SDL_INIT_NOPARACHUTE |
치명적인 신호를 무시 |
SDL_WINDOW_FULLSCREEN |
전체화면 창 |
SDL_WINDOW_FULLSCREEN_DESKTOP |
데스크탑 해상도의 전체 화면 창 |
SDL_WINDOW_OPENGL |
OpenGL 컨텍스트로 사용가능한 창 |
SDL_WINDOW_VULKAN |
Vulkan 과 함께 사용 가능한 창 |
SDL_WINDOW_HIDDEN |
보이지 않는 창 |
SDL_WINDOW_BORDERLESS |
데코레이션이 없는 창 |
SDL_WINDOW_RESIZABLE |
크기를 조정 가능 |
SDL_WINDOW_MINIMIZED |
최소화 창 |
SDL_WINDOW_MAXIMIZED |
최대화 창 |
SDL_WINDOW_INPUT_GRABBED |
입력 포커스를 얻음 |
SDL_WINDOW_ALLOW_HIGHDPI |
지원되는 경우 높은 DPI 모드에서 창 (>= SDL 2.0.1) |
SDL_RENDERER_SOFTWARE |
소프트웨어 대체 |
SDL_RENDERER_ACCELERATED |
하드웨어 가속을 사용 |
SDL_RENDERER_PRESENTVSYNC |
새로고침 수직동기화 |
SDL_RENDERER_TARGETTEXTURE |
텍스처 렌더링을 지원 |
#include <iostream>
#include <SDL2/SDL.h>
using namespace std;
#define UNUSED(x) (void)(x)
int sdl_window_example()
{
SDL_Window *window; // Declare a pointer
SDL_Init(SDL_INIT_VIDEO); // Initialize SDL2
// Create an application window with the following settings:
window = SDL_CreateWindow(
"An SDL2 window", // window title
SDL_WINDOWPOS_UNDEFINED, // initial x position
SDL_WINDOWPOS_UNDEFINED, // initial y position
640, // width, in pixels
480, // height, in pixels
SDL_WINDOW_OPENGL // flags - see below
);
// Check that the window was successfully created
if (window == nullptr) {
// In the case that the window could not be made...
printf("Could not create window: %s\n", SDL_GetError());
return 1;
}
auto renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if(renderer == nullptr)
goto destroy_window;
SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
// The window is open: could enter program loop here (see SDL_PollEvent())
SDL_Delay(3000); // Pause execution for 3000 milliseconds, for example
// Close and destroy the renderer
SDL_DestroyRenderer(renderer);
destroy_window:
// Close and destroy the window
SDL_DestroyWindow(window);
// Clean up
SDL_Quit();
return 0;
}
int main(int argc, char *argv[])
{
UNUSED(argc);
UNUSED(argv);
cout << "Hello World!" << endl;
return sdl_window_example();
}
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
15 | C++를 위한 Lottie 라이브러리 with SDL2 | makersweb | 2021.08.15 | 963 |
14 | Protocol Buffers 를 이용한 직렬화 with Conan Package Manager | makersweb | 2021.02.24 | 867 |
13 | NAppGUI, C언어용 크로스 플랫폼 GUI 라이브러리 | makersweb | 2022.10.10 | 866 |
12 | ZeroMQ 를 이용한 Qt 응용프로그램 간 통신 | makersweb | 2021.08.28 | 851 |
11 | VSCode 와 Qbs 플러그인으로 C/C++ 개발환경 구성 | makersweb | 2021.09.12 | 851 |
10 | 윈도우에서 안드로이드 flutter 프로그래밍 개발환경 구축(with Visual Studio Code) | makersweb | 2020.09.16 | 796 |
9 | Chromium과 Ozone 층 | makersweb | 2022.03.03 | 735 |
8 | 라즈베리파이에서 Redis의 Pub/Sub 패턴을 사용하는 Electron 응용프로그램 | makersweb | 2021.01.31 | 682 |
7 | Windows에서 Qt Creator + CMake + vcpkg 로 C++ 개발환경 구성 (POCO 라이브러리 DirectoryWatcher 예제) | makersweb | 2023.01.14 | 677 |
6 | 라즈베리파이4에서 openFrameworks 예제 실행 | makersweb | 2020.12.13 | 560 |
5 | CopperSpice 에 대해서 (C++ Gui 라이브러리) | makersweb | 2022.01.02 | 539 |
4 | 도커(docker)설치 및 기본 명령어 | makersweb | 2019.12.02 | 483 |
3 | OTA 오픈소스 프로젝트 | makersweb | 2022.08.03 | 475 |
2 | Flutter 위젯의 상태관리에 대해서 | makersweb | 2023.04.06 | 458 |
1 | openFrameworks 한글 폰트 설정 및 출력하기 | makersweb | 2023.02.19 | 202 |