From d72cb85d407b258ea91003f35308deaf4e497ced Mon Sep 17 00:00:00 2001 From: Juraj Michalek Date: Mon, 25 Nov 2013 20:38:07 +0100 Subject: [PATCH] add SDL2 samples --- README.md | 14 ++++ sdl/01-sdl2-init/01-sdl2-init.vcxproj | 97 ++++++++++++++++++++++++++ sdl/02-sdl2-video/02-sdl2-video.cpp | 51 ++++++++++++++ sdl/02-sdl2-video/smajlik.bmp | Bin 0 -> 85402 bytes sdl/DownloadLibrary.ps1 | 14 ++++ sdl/README.md | 7 ++ 6 files changed, 183 insertions(+) create mode 100644 sdl/01-sdl2-init/01-sdl2-init.vcxproj create mode 100644 sdl/02-sdl2-video/02-sdl2-video.cpp create mode 100644 sdl/02-sdl2-video/smajlik.bmp create mode 100644 sdl/DownloadLibrary.ps1 create mode 100644 sdl/README.md diff --git a/README.md b/README.md index 4225f74..aa3451c 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,20 @@ How to run (PowerShell + VS 2013): restore C++ REST SDK CTRL+F5 to run the project +Simple DirectMedia Layer 2 +-------------------------- + +SDL2 is multiplatform library suitable for developing applications like games. +Example is based on SDL2. +You can download version for Visual Studio at: http://libsdl.org/release/SDL2-devel-2.0.1-VC.zip +This library is also available in all common Linux ditributions. + +How to run (PowerShell + VS 2013): + + cd sdl + .\DownloadLibrary.ps1 + ii .\sdl2-sample.sln + node ---- diff --git a/sdl/01-sdl2-init/01-sdl2-init.vcxproj b/sdl/01-sdl2-init/01-sdl2-init.vcxproj new file mode 100644 index 0000000..c91e5b0 --- /dev/null +++ b/sdl/01-sdl2-init/01-sdl2-init.vcxproj @@ -0,0 +1,97 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {C8D4C9F2-D4C8-48EE-8F48-0A56BBBA2ECA} + Win32Proj + sdl2sample + 01-sdl2-init + + + + Application + true + v120 + Unicode + + + Application + false + v120 + true + Unicode + + + + + + + + + + + + + true + $(VC_ExecutablePath_x86);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH); + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + ..\SDL2-2.0.1\include;%(AdditionalIncludeDirectories) + + + Console + true + ..\SDL2-2.0.1\lib\x86;%(AdditionalLibraryDirectories) + SDL2.lib;%(AdditionalDependencies) + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + + + Console + true + true + true + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sdl/02-sdl2-video/02-sdl2-video.cpp b/sdl/02-sdl2-video/02-sdl2-video.cpp new file mode 100644 index 0000000..cc9a39b --- /dev/null +++ b/sdl/02-sdl2-video/02-sdl2-video.cpp @@ -0,0 +1,51 @@ +// 02-sdl2-video.cpp : SDL2 example - initialize video and display image +// + +#include "stdafx.h" +#include "SDL.h" + +int _tmain(int argc, _TCHAR* argv[]) { + if (SDL_Init(SDL_INIT_EVERYTHING) == -1){ + printf("Error initializing SDL: %s\n", SDL_GetError()); + return 1; + } + + SDL_Window *win = nullptr; + win = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN); + if (win == nullptr){ + printf("%i\n", SDL_GetError()); + return 1; + } + + SDL_Renderer *ren = nullptr; + ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); + if (ren == nullptr){ + printf("%i\n", SDL_GetError()); + return 1; + } + + SDL_Surface *bmp = nullptr; + bmp = SDL_LoadBMP("smajlik.bmp"); + if (bmp == nullptr){ + printf("%i\n", SDL_GetError()); + return 1; + } + + SDL_Texture *tex = nullptr; + tex = SDL_CreateTextureFromSurface(ren, bmp); + SDL_FreeSurface(bmp); + + SDL_RenderClear(ren); + SDL_RenderCopy(ren, tex, NULL, NULL); + SDL_RenderPresent(ren); + + SDL_Delay(2000); + + SDL_DestroyTexture(tex); + SDL_DestroyRenderer(ren); + SDL_DestroyWindow(win); + + SDL_Quit(); + return 0; +} + diff --git a/sdl/02-sdl2-video/smajlik.bmp b/sdl/02-sdl2-video/smajlik.bmp new file mode 100644 index 0000000000000000000000000000000000000000..141a058d3f59f3ff893d5a230ec156522cf57bc7 GIT binary patch literal 85402 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