public void Execute() { if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0) { SdlLogger.Fatal(nameof(SDL.SDL_Init)); } var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN); if (window == IntPtr.Zero) { SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow), () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var renderer = SDL.SDL_CreateRenderer( window, -1, SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC); if (renderer == IntPtr.Zero) { SdlLogger.Fatal( nameof(SDL.SDL_CreateRenderer), () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var background = Resources.LoadTextureFromBitmap(Resources.GetFilePath(@"lesson2/background.bmp"), renderer); var image = Resources.LoadTextureFromBitmap(Resources.GetFilePath(@"lesson2/image.bmp"), renderer); if (background == IntPtr.Zero || image == IntPtr.Zero) { SdlLogger.Fatal( nameof(Resources.LoadTextureFromBitmap), () => ReleaseAndQuit(window, renderer, background, image)); } SDL.SDL_RenderClear(renderer); uint format; int x, y, iW, iH, bW, bH, access; SDL.SDL_QueryTexture(background, out format, out access, out bW, out bH); SdlDrawing.RenderTexture(background, renderer, 0, 0); SdlDrawing.RenderTexture(background, renderer, bW, 0); SdlDrawing.RenderTexture(background, renderer, 0, bH); SdlDrawing.RenderTexture(background, renderer, bW, bH); SDL.SDL_QueryTexture(image, out format, out access, out iW, out iH); x = WIDTH / 2 - iW / 2; y = HEIGHT / 2 - iH / 2; SdlDrawing.RenderTexture(image, renderer, x, y); SDL.SDL_RenderPresent(renderer); SDL.SDL_Delay(5 * 1000); ReleaseAndQuit(window, renderer, background, image); }
public void Execute() { if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0) { SdlLogger.Fatal(nameof(SDL.SDL_Init)); } SDL_image.IMG_Init(SDL_image.IMG_InitFlags.IMG_INIT_PNG); if (SDL_ttf.TTF_Init() != 0) { SdlLogger.Fatal(nameof(SDL_ttf.TTF_Init)); } var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN); if (window == IntPtr.Zero) { SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow), () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var renderer = SDL.SDL_CreateRenderer( window, -1, SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC); if (renderer == IntPtr.Zero) { SdlLogger.Fatal( nameof(SDL.SDL_CreateRenderer), () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var font = SDL_ttf.TTF_OpenFont(Resources.GetFilePath("lesson6/long_pixel-7.ttf"), 16); if (font == IntPtr.Zero) { SdlLogger.Fatal( nameof(Resources.LoadTextureFromImage), () => ReleaseAndQuit(window, renderer, IntPtr.Zero, IntPtr.Zero)); } var colorWhite = new SDL.SDL_Color(); colorWhite.r = 255; colorWhite.g = 255; colorWhite.b = 255; var image = SdlDrawing.CreateTextureFromText(@"SDL2_TTF - крутота!", font, colorWhite, renderer); var quit = false; int x, y, iW = 100, iH = 100; x = WIDTH / 2 - iW / 2; y = HEIGHT / 2 - iH / 2; var e = new SDL.SDL_Event(); while (!quit) { // event handling while (SDL.SDL_PollEvent(out e) > 0) { if (e.type == SDL.SDL_EventType.SDL_QUIT) { quit = true; } if (e.type == SDL.SDL_EventType.SDL_KEYDOWN) { switch (e.key.keysym.sym) { case SDL.SDL_Keycode.SDLK_ESCAPE: quit = true; break; } } } // rendering SDL.SDL_RenderClear(renderer); SdlDrawing.RenderTexture(image, renderer, x, y); SDL.SDL_RenderPresent(renderer); } ReleaseAndQuit(window, renderer, font, image); }
public void Execute() { if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0) { SdlLogger.Fatal(nameof(SDL.SDL_Init)); } SDL_image.IMG_Init(SDL_image.IMG_InitFlags.IMG_INIT_PNG); var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN); if (window == IntPtr.Zero) { SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow), () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var renderer = SDL.SDL_CreateRenderer( window, -1, SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC); if (renderer == IntPtr.Zero) { SdlLogger.Fatal( nameof(SDL.SDL_CreateRenderer), () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var image = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson5/image.png"), renderer); if (image == IntPtr.Zero) { SdlLogger.Fatal( nameof(Resources.LoadTextureFromImage), () => ReleaseAndQuit(window, renderer, IntPtr.Zero, image)); } var quit = false; int x, y, iW = 100, iH = 100, useClip = 0; x = WIDTH / 2 - iW / 2; y = HEIGHT / 2 - iH / 2; var clips = new SDL.SDL_Rect[4]; for (var i = 0; i < clips.Length; i++) { clips[i] = new SDL.SDL_Rect { x = i / 2 * iW, y = i % 2 * iH, w = iW, h = iH, }; } var e = new SDL.SDL_Event(); while (!quit) { // event handling while (SDL.SDL_PollEvent(out e) > 0) { if (e.type == SDL.SDL_EventType.SDL_QUIT) { quit = true; } if (e.type == SDL.SDL_EventType.SDL_KEYDOWN) { switch (e.key.keysym.sym) { case SDL.SDL_Keycode.SDLK_LEFT: useClip = useClip > 0 ? useClip - 1 : clips.Length - 1; break; case SDL.SDL_Keycode.SDLK_RIGHT: useClip = useClip < clips.Length - 1 ? useClip + 1 : 0; break; case SDL.SDL_Keycode.SDLK_ESCAPE: quit = true; break; } } } // rendering SDL.SDL_RenderClear(renderer); SdlDrawing.RenderTexture(image, renderer, x, y, clips[useClip]); SDL.SDL_RenderPresent(renderer); } ReleaseAndQuit(window, renderer, IntPtr.Zero, image); }
public override void Render() { SdlDrawing.RenderTexture(_texture, _renderer, _target.X, _target.Y); }
public void Execute() { if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0) { SdlLogger.Fatal(nameof(SDL.SDL_Init)); } SDL_image.IMG_Init(SDL_image.IMG_InitFlags.IMG_INIT_PNG); var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN); if (window == IntPtr.Zero) { SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow), () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var renderer = SDL.SDL_CreateRenderer( window, -1, SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC); if (renderer == IntPtr.Zero) { SdlLogger.Fatal( nameof(SDL.SDL_CreateRenderer), () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var background = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson3/background.png"), renderer); var image = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson3/image.png"), renderer); if (background == IntPtr.Zero || image == IntPtr.Zero) { SdlLogger.Fatal( nameof(Resources.LoadTextureFromImage), () => ReleaseAndQuit(window, renderer, background, image)); } SDL.SDL_RenderClear(renderer); var xTiles = WIDTH / TILE_SIZE; var yTiles = HEIGHT / TILE_SIZE; uint format; int x, y, iW, iH, access; for (var i = 0; i < xTiles * yTiles; i++) { x = (i % xTiles) * TILE_SIZE; y = (i / xTiles) * TILE_SIZE; SdlDrawing.RenderTexture(background, renderer, x, y, TILE_SIZE, TILE_SIZE); } SDL.SDL_QueryTexture(image, out format, out access, out iW, out iH); x = WIDTH / 2 - iW / 2; y = HEIGHT / 2 - iH / 2; SdlDrawing.RenderTexture(image, renderer, x, y); SDL.SDL_RenderPresent(renderer); SDL.SDL_Delay(5 * 1000); ReleaseAndQuit(window, renderer, background, image); }
public void Execute() { if (SDL.SDL_Init(SDL.SDL_INIT_VIDEO) != 0) { SdlLogger.Fatal(nameof(SDL.SDL_Init)); } SDL_image.IMG_Init(SDL_image.IMG_InitFlags.IMG_INIT_PNG); var window = SDL.SDL_CreateWindow(TITLE, 0, 0, WIDTH, HEIGHT, SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN); if (window == IntPtr.Zero) { SdlLogger.Fatal(nameof(SDL.SDL_CreateWindow), () => ReleaseAndQuit(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var renderer = SDL.SDL_CreateRenderer( window, -1, SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC); if (renderer == IntPtr.Zero) { SdlLogger.Fatal( nameof(SDL.SDL_CreateRenderer), () => ReleaseAndQuit(window, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)); } var background = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson3/background.png"), renderer); var image = Resources.LoadTextureFromImage(Resources.GetFilePath(@"lesson4/image.png"), renderer); if (background == IntPtr.Zero || image == IntPtr.Zero) { SdlLogger.Fatal( nameof(Resources.LoadTextureFromImage), () => ReleaseAndQuit(window, renderer, background, image)); } var quit = false; var xTiles = WIDTH / TILE_SIZE; var yTiles = HEIGHT / TILE_SIZE; uint format; int x, y, iW, iH, access; var e = new SDL.SDL_Event(); while (!quit) { // event handling while (SDL.SDL_PollEvent(out e) > 0) { if (e.type == SDL.SDL_EventType.SDL_QUIT) { quit = true; } if (e.type == SDL.SDL_EventType.SDL_KEYDOWN) { quit = true; } if (e.type == SDL.SDL_EventType.SDL_MOUSEBUTTONDOWN) { quit = true; } } // rendering SDL.SDL_RenderClear(renderer); for (var i = 0; i < xTiles * yTiles; i++) { x = (i % xTiles) * TILE_SIZE; y = (i / xTiles) * TILE_SIZE; SdlDrawing.RenderTexture(background, renderer, x, y, TILE_SIZE, TILE_SIZE); } SDL.SDL_QueryTexture(image, out format, out access, out iW, out iH); x = WIDTH / 2 - iW / 2; y = HEIGHT / 2 - iH / 2; SdlDrawing.RenderTexture(image, renderer, x, y); SDL.SDL_RenderPresent(renderer); } ReleaseAndQuit(window, renderer, background, image); }