Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void draw_pixel(Buffer *buffer, int32 x, int32 y, uint32 color)
- {
- buffer->pixels[y * buffer->width + x] = color;
- }
- void draw_rect_in_pixels(Buffer *buffer, int32 x, int32 y, int32 width, int32 height, uint32 color)
- {
- int32 xpos = x;
- int32 ypos = y;
- for(; ypos < height; ypos++)
- {
- for(; xpos < width; xpos++)
- {
- draw_pixel(buffer, xpos, ypos, color);
- }
- }
- }
- Result buffer_to_texture(SDL_Renderer *renderer, Buffer *buffer)
- {
- Result result;
- SDL_Texture *buffer_texture = SDL_CreateTexture(
- renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, buffer->width, buffer->height
- );
- if(!buffer_texture)
- {
- result = result_error("Failed to create SDL Texture for Buffer");
- return result;
- }
- SDL_UpdateTexture(buffer_texture, 0, buffer->pixels, buffer->width * 4);
- return result_some(buffer_texture);
- }
- void game_window_loop(GameWindow *game_window, Buffer *buffer)
- {
- int running = 1;
- while(running)
- {
- while(SDL_PollEvent(&game_window->event) > 0)
- {
- switch(game_window->event.type)
- {
- case SDL_QUIT:
- running = 0;
- break;
- }
- }
- SDL_RenderClear(game_window->renderer);
- clear_screen(buffer, color_from_rgba(110, 120, 100, 255));
- draw_rect_in_pixels(buffer, 10, 10, 20, 20, color_from_rgba(255, 0, 0, 255));
- Result screen_texture_result = buffer_to_texture(game_window->renderer, buffer);
- if(is_error(screen_texture_result))
- {
- printf("Failed to render!\nError: %s\n", screen_texture_result.error);
- running = 0;
- }
- SDL_Texture *screen_texture = screen_texture_result.value;
- SDL_RenderCopy(game_window->renderer, screen_texture, 0, 0);
- SDL_RenderPresent(game_window->renderer);
- SDL_DestroyTexture(screen_texture);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement