SDL (三) 紋理 渲染 bmp圖片

//SDL 圖片渲染
#include <stdio.h>
// #include <stdafx.h>
#include <SDL2/SDL.h>

// #define IMG_PATH "/Users/bigfish/test/SDL_logo.png"
#define IMG_PATH "/Users/bigfish/test/AAC05.bmp"

#undef main //SDL 中定義了main,所以這裏去掉,不然會執行錯誤!

int main(int argc, char *argv[])
{
  SDL_Init(SDL_INIT_VIDEO);
  int quit = 1;
  SDL_Event event;
  SDL_Window *window;
  SDL_Surface *surfaceBMP;

  SDL_Renderer *renderer;
  SDL_Texture *texture;

  //獲取窗口指針,未指定位置信息,寬高爲800x600
  window = SDL_CreateWindow("SDL_bmp_title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN);

  surfaceBMP = SDL_LoadBMP(IMG_PATH);

  renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
  //創建紋理
  texture = SDL_CreateTextureFromSurface(renderer, surfaceBMP);
  //清空渲染器
  SDL_RenderClear(renderer);
  //將紋理顯示在渲染器上
  SDL_RenderCopy(renderer, texture, NULL, NULL);
  //顯示渲染器內容
  SDL_RenderPresent(renderer);

  do
  {

    SDL_WaitEvent(&event);
    switch (event.type)
    {
    case SDL_QUIT:
      quit = 0;
      break;
    default:
      SDL_Log("event type is %d \n", event.type);
    }
  } while (quit);

  //釋放資源
  SDL_DestroyTexture(texture);
  SDL_DestroyRenderer(renderer);
  SDL_FreeSurface(surfaceBMP);
  SDL_DestroyWindow(window);
  SDL_Quit();
  return 0;
}

DEMO地址

最後附上 雷神的學習資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章