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();
}
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
16 | 라즈베리파이4에서 openFrameworks 예제 실행 | makersweb | 2020.12.13 | 1397 |
15 | Dear ImGui, 경량의 C++ 용 GUI 및 Widget 라이브러리 | makersweb | 2020.11.28 | 10348 |
14 | GENIVI DLT(Diagnostic Log and Trace) 활용 | makersweb | 2020.11.19 | 10889 |
13 | 윈도우에서 안드로이드 flutter 프로그래밍 개발환경 구축(with Visual Studio Code) | makersweb | 2020.09.16 | 1700 |
12 | 가볍고 쉬운 임베디드용 그래픽 라이브러리 - LVGL | makersweb | 2020.09.16 | 4460 |
11 | Qt와 GStreamer 로 작성한 flac 오디오 재생 예제 | makersweb | 2020.09.05 | 1886 |
10 | ZeroMQ 비동기 클라이언트/서버 패턴 | makersweb | 2020.08.13 | 2673 |
9 | ZeroMQ의 기본 메세지 패턴들 | makersweb | 2020.07.31 | 9717 |
» | [SDL2 와 OpenGL]윈도우 생성과 2D그래픽 | makersweb | 2020.04.11 | 3869 |
7 | Pluma(C++ Plug-in Management Framework) 튜토리얼 | makersweb | 2019.12.07 | 14705 |
6 | 도커(docker)설치 및 기본 명령어 | makersweb | 2019.12.02 | 1258 |
5 | webOS소개 및 Raspberry Pi 3 에서 실행 | makersweb | 2019.10.13 | 4647 |
4 | 리눅스에서 SDL2 최신버전 컴파일과 Qt Creator로 개발환경 구성 | makersweb | 2019.10.06 | 3811 |
3 | 텔레그램(Telegram) Bot 개발 | makersweb | 2019.07.21 | 6583 |
2 | GDBus 튜토리얼(GDBus tutorial) | makersweb | 2019.06.30 | 11853 |
1 | Wayland IVI Extension 간단 리뷰 | makersweb | 2019.05.12 | 3007 |