Javascript required
Skip to content Skip to sidebar Skip to footer

What Does Sdl Stand for in Windows

SDL library in C/C++ with examples

SDL is Simple DirectMedia Layer.It is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.It can be used to make animations and video games.

  • It basically provides a set of APIs to interact with various devices like graphics hardware, audio, keyboard, mouse, etc.
  • It is written in C programming language and works with C++ and various other languages like c# and python.

Installation on Linux ( For OS which uses the apt package manager eg : Ubuntu ):

Take a step-up from those "Hello World" programs. Learn to implement data structures like Heap, Stacks, Linked List and many more! Check out our Data Structures in C course to start learning today.

  1. Run command sudo apt-get update on your terminal.
  2. Run command sudo apt-get install clang on your terminal.
  3. Run command sudo apt-get install libsdl2-2.0-0 libsdl2-dbg libsdl2-dev libsdl2-image-2.0-0 libsdl2-image-dbg libsdl2-image-dev on your terminal.
  4. We need to make a Makefile.So open a text editor of your choice and start writing the code below.
# A simple Makefile for compiling small SDL projects  # set the compiler CC := clang  # set the compiler flags CFLAGS := `sdl2-config --libs --cflags` -ggdb3 -O0 --std=c99 -Wall -lSDL2_image -lm # add header files here HDRS :=  # add source files here SRCS := #file-name.c  # generate names of object files OBJS := $(SRCS:.c=.o)  # name of executable EXEC := #name your executable file  # default recipe all: $(EXEC)   showfont: showfont.c Makefile     $(CC) -o $@ $@.c $(CFLAGS) $(LIBS)  glfont: glfont.c Makefile     $(CC) -o $@ $@.c $(CFLAGS) $(LIBS)  # recipe for building the final executable $(EXEC): $(OBJS) $(HDRS) Makefile     $(CC) -o $@ $(OBJS) $(CFLAGS)  # recipe for building object files #$(OBJS): $(@:.o=.c) $(HDRS) Makefile #    $(CC) -o $@ $(@:.o=.c) -c $(CFLAGS)  # recipe to clean the workspace clean:     rm -f $(EXEC) $(OBJS)  .PHONY: all clean

Header Files:

C++

#include <SDL2/SDL.h>

#include <SDL2/SDL_image.h>

#include <SDL2/SDL_timer.h>

Initialization:



C++

#include <SDL2/SDL.h>

#include <SDL2/SDL_image.h>

#include <SDL2/SDL_timer.h>

int main( int argc, char *argv[])

{

if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {

printf ( "error initializing SDL: %s\n" , SDL_GetError());

}

SDL_Window* win = SDL_CreateWindow( "GAME" ,

SDL_WINDOWPOS_CENTERED,

SDL_WINDOWPOS_CENTERED,

1000, 1000, 0);

while (1)

;

return 0;

}

That will create a empty window on your screen.
Output:

We will write a simple program to explain rendering and I/O handling:

C++

#include <SDL2/SDL.h>

#include <SDL2/SDL_image.h>

#include <SDL2/SDL_timer.h>

int main( int argc, char *argv[])

{

if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {

printf ( "error initializing SDL: %s\n" , SDL_GetError());

}

SDL_Window* win = SDL_CreateWindow( "GAME" ,

SDL_WINDOWPOS_CENTERED,

SDL_WINDOWPOS_CENTERED,

1000, 1000, 0);

Uint32 render_flags = SDL_RENDERER_ACCELERATED;

SDL_Renderer* rend = SDL_CreateRenderer(win, -1, render_flags);

SDL_Surface* surface;

surface = IMG_Load( "path" );

SDL_Texture* tex = SDL_CreateTextureFromSurface(rend, surface);

SDL_FreeSurface(surface);

SDL_Rect dest;

SDL_QueryTexture(tex, NULL, NULL, &dest.w, &dest.h);

dest.w /= 6;

dest.h /= 6;

dest.x = (1000 - dest.w) / 2;

dest.y = (1000 - dest.h) / 2;

int close = 0;

int speed = 300;

while (!close) {

SDL_Event event;

while (SDL_PollEvent(&event)) {

switch (event.type) {

case SDL_QUIT:

close = 1;

break ;

case SDL_KEYDOWN:

switch (event.key.keysym.scancode) {

case SDL_SCANCODE_W:

case SDL_SCANCODE_UP:

dest.y -= speed / 30;

break ;

case SDL_SCANCODE_A:

case SDL_SCANCODE_LEFT:

dest.x -= speed / 30;

break ;

case SDL_SCANCODE_S:

case SDL_SCANCODE_DOWN:

dest.y += speed / 30;

break ;

case SDL_SCANCODE_D:

case SDL_SCANCODE_RIGHT:

dest.x += speed / 30;

break ;

default :

break ;

}

}

}

if (dest.x + dest.w > 1000)

dest.x = 1000 - dest.w;

if (dest.x < 0)

dest.x = 0;

if (dest.y + dest.h > 1000)

dest.y = 1000 - dest.h;

if (dest.y < 0)

dest.y = 0;

SDL_RenderClear(rend);

SDL_RenderCopy(rend, tex, NULL, &dest);

SDL_RenderPresent(rend);

SDL_Delay(1000 / 60);

}

SDL_DestroyTexture(tex);

SDL_DestroyRenderer(rend);

SDL_DestroyWindow(win);

SDL_Quit();

return 0;

}

That will render a image on the window which can be controlled via your keyboard up, down, left, right.
Output:

References: https://www.libsdl.org/, https://github.com/vivek9236/rocket_game


What Does Sdl Stand for in Windows

Source: https://www.geeksforgeeks.org/sdl-library-in-c-c-with-examples/