@vit1251/napi_sdl2
v0.1.5
Published
SDL2 bindings with N-API
Downloads
1
Readme
napi_sdl2
The goal of this library provides SDL2 bindings for node using N-API. It is heavily inspired in node-sdl. It is heavily inspired in napi-sdl2.
Supported OS
- Linux
Installation
Prepare base system
Linux
sudo apt install libsdl2-ttf-dev libsdl2-dev
Setup Node module
npm install @vit1251/napi_sdl2
Usage
import SDL2 from '@vit1251/napi_sdl2';
Example
Initialize and create SDL window
SDL2.SDL_Init(SDL2.SDL_INIT_EVERYTHING);
let [screen_width, screen_height] = [800, 800];
let sdl_window = SDL2.SDL_CreateWindow("SDL Sample",
0, 0, screen_width, screen_height, SDL2.SDL_WINDOW_SHOWN | SDL2.SDL_WINDOW_RESIZABLE);
let sdl_renderer = SDL2.SDL_CreateRenderer( sdl_window, -1, SDL2.SDL_RENDERER_ACCELERATED );
//Initialize renderer color
SDL2.SDL_SetRenderDrawColor( sdl_renderer, [0xFF, 0xFF, 0xFF, 0xFF]);
Handling SDL events using SDL_PeepEvents. You also can use SDL_WaitEvent or SDL_PollEvent.
let event = {};
SDL2.SDL_PumpEvents();
while(1) {
let ret = SDL2.SDL_PeepEvents(event, 1, SDL2.SDL_GETEVENT, SDL2.SDL_FIRSTEVENT, SDL2.SDL_LASTEVENT);
if(ret == 1) break;
SDL2.SDL_Delay(10);
render(context);
SDL2.SDL_PumpEvents();
}
Rendering graphics
const [screen_width, screen_height] = SDL2.SDL_GetWindowSize(context.window);
//Clear screen
SDL2.SDL_SetRenderDrawColor( context.renderer, [0xFF, 0xFF, 0xFF, 0xFF] );
SDL2.SDL_RenderClear( context.renderer );
//Render red filled quad
SDL2.SDL_SetRenderDrawColor( context.renderer, [0xFF, 0x00, 0x00, 0xFF] );
SDL2.SDL_RenderFillRect( context.renderer, [screen_width / 4, screen_height / 4, screen_width / 2, screen_height / 2 ] );
//Update screen
SDL2.SDL_RenderPresent( context.renderer );