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 | 979 |
14 | ZeroMQ 를 이용한 Qt 응용프로그램 간 통신 | makersweb | 2021.08.28 | 876 |
13 | VSCode 와 Qbs 플러그인으로 C/C++ 개발환경 구성 | makersweb | 2021.09.12 | 874 |
12 | Flutter/Dart 와 Qt/QML 비교 | makersweb | 2021.11.07 | 1441 |
11 | CopperSpice 에 대해서 (C++ Gui 라이브러리) | makersweb | 2022.01.02 | 552 |
10 | Flutter Application 에서 한글(EUC-KR) 깨져서 나오는 문제 | makersweb | 2022.01.06 | 2758 |
9 | Chromium과 Ozone 층 | makersweb | 2022.03.03 | 754 |
8 | AGL (Automotive Grade Linux) 개요 | makersweb | 2022.06.19 | 1903 |
7 | OTA 오픈소스 프로젝트 | makersweb | 2022.08.03 | 502 |
6 | NAppGUI, C언어용 크로스 플랫폼 GUI 라이브러리 | makersweb | 2022.10.10 | 901 |
5 | Windows에서 Qt Creator + CMake + vcpkg 로 C++ 개발환경 구성 (POCO 라이브러리 DirectoryWatcher 예제) | makersweb | 2023.01.14 | 725 |
4 | LVGL 을 통해 GUI 구현 시 한글 폰트 추가 | makersweb | 2023.02.07 | 1237 |
3 | openFrameworks 한글 폰트 설정 및 출력하기 | makersweb | 2023.02.19 | 227 |
2 | [NodeGui] JavaScript로 데스크탑 응용프로그램 작성 | makersweb | 2023.02.21 | 1280 |
1 | Flutter 위젯의 상태관리에 대해서 | makersweb | 2023.04.06 | 469 |