I'm Remaking Galaga to learn SDL2/SDL. I managed to render a sprite and display and create the windo and game loop. Problem is, The sprite takes up the whole screen. Is there way to fix this? Here's the code:
#include <iostream>
#include <SDL2/SDL.h>
#define SPRITE_SIZE 32
const int WIDTH = 448, HEIGHT = 576;
int main( int argc, char *argv[] )
{
std::cout<<"Starting SDL...\n";
SDL_Init( SDL_INIT_EVERYTHING);
std::cout<<"Creating Window...\n";
SDL_Window *window = SDL_CreateWindow( "GALAGA", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_ALLOW_HIGHDPI);
if (NULL == window)
{
std::cout<<"Failed to create window" << SDL_GetError() << std::endl;
return 1;
}
std::cout<<"Adding Renderer...\n";
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, 0);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
/* Load bitmap image */
SDL_Surface *bmp = SDL_LoadBMP("./Ship.bmp");
if (bmp == nullptr) {
std::cout << "SDL_LoadBMP Error: " << SDL_GetError() << std::endl;
return 1;
}
/* Upload surface to render, and then, free the surface */
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, bmp);
SDL_FreeSurface(bmp);
if (texture == nullptr){
std::cout << "SDL_CreateTextureFromSurface Error: " << SDL_GetError() << std::endl;
return 1;
}
/* Draw the render on window */
SDL_RenderClear(renderer); // Fill render with color
SDL_RenderCopy(renderer, texture, NULL, NULL); // Copy the texture into render
SDL_RenderPresent(renderer); // Show render on window
SDL_Event windowEvent;
while (true)
{
if (SDL_PollEvent( &windowEvent))
{
if (SDL_QUIT == windowEvent.type )
{
break;
}
}
}
SDL_DestroyWindow(window);
SDL_Quit();
return EXIT_SUCCESS;
}
The rendered sprite is Ship.bmp.
The sprite take up the whole window and I'm trying to fix it.