这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 飞凌RK3588开发板试用基于SDL进行GUI程序开发

共1条 1/1 1 跳转至

飞凌RK3588开发板试用基于SDL进行GUI程序开发

助工
2025-11-20 20:02:52     打赏

前言

前几篇我们体验了使用ffmpeg进行多媒体开发,本篇使用SDL来进行GUI相关的应用开发。通过加载位图显示的Demo来演示。

构建

下载源码https://github.com/libsdl-org/SDL/releases/https://github.com/libsdl-org/SDL/releases/download/release-2.26.4/SDL2-2.26.4.tar.gz解压tar -xvf SDL2-2.26.4.tar.gz进入工作目录cd SDL2-2.26.4/创建目录mkdir build配置./configure --prefix=$PWD/build构建安装make && make install编译完如下:Build下生成4个文件夹bin share lib include生成的库文件位于build/lib头文件位于build/include/SDL2/测试vi /etc/profile添加export C_INCLUDE_PATH=/root/SDL2-2.26.4/build/include/SDL2:$C_INCLUDE_PATHexport LIBRARY_PATH=/root/SDL2-2.26.4/build/lib:$LIBRARY_PATHexport LD_LIBRARY_PATH=/root/SDL2-2.26.4/build/lib:$LD_LIBRARY_PATH   source /etc/profile创建源文件内容如下sdltest.c



  1. #include


  2. #include




  3. int main(int argc, char* argv[])


  4. {


  5.     /* 初始化SDL */


  6.     if(SDL_Init(SDL_INIT_VIDEO) != 0)


  7.     {


  8.         printf("SDL_Init Error %s.n", SDL_GetError());


  9.         return 1;


  10.     }




  11.     /* 打开窗口 */


  12.     SDL_Window *win = SDL_CreateWindow("Hello World", 100, 100, 640, 480, SDL_WINDOW_SHOWN);


  13.     if(win == NULL)


  14.     {


  15.         printf("SDL_CreateWindow Error %s.n",SDL_GetError());


  16.         SDL_Quit();


  17.         return 1;


  18.     }




  19.     /* 创建渲染器 */


  20.     SDL_Renderer *ren = SDL_CreateRenderer(win , -1, SDL_RENDERER_SOFTWARE);


  21.     if(ren == NULL)


  22.     {


  23.         SDL_DestroyWindow(win);


  24.         printf("SDL_CreateRenderer Error %s.n",SDL_GetError());


  25.         SDL_Quit();


  26.         return 1;


  27.     }




  28.     /* 加载位图图像 */


  29.     SDL_Surface *bmp = SDL_LoadBMP("hello.bmp");


  30.     if(bmp == NULL)


  31.     {


  32.         SDL_DestroyRenderer(ren);


  33.         SDL_DestroyWindow(win);


  34.         printf("SDL_LoadBMP Error %s.n",SDL_GetError());


  35.         SDL_Quit();


  36.         return 1;


  37.     }




  38.     SDL_Texture *tex = SDL_CreateTextureFromSurface(ren, bmp);


  39.     SDL_FreeSurface(bmp);


  40.     if (tex == NULL)


  41.     {


  42.         SDL_DestroyRenderer(ren);


  43.         SDL_DestroyWindow(win);


  44.         printf("SDL_CreateTextureFromSurface Error %s.n",SDL_GetError());


  45.         SDL_Quit();


  46.         return 1;


  47.     }




  48.     //A sleepy rendering loop, wait for 3 seconds and render and present the screen each time


  49.     for (int i = 0; i < 3; ++i)


  50.     {


  51.         //First clear the renderer


  52.         SDL_RenderClear(ren);


  53.         //Draw the texture


  54.         SDL_RenderCopy(ren, tex, NULL, NULL);


  55.         //Update the screen


  56.         SDL_RenderPresent(ren);


  57.         //Take a quick break after all that hard work


  58.         SDL_Delay(1000);


  59.     }




  60.     SDL_DestroyTexture(tex);


  61.     SDL_DestroyRenderer(ren);


  62.     SDL_DestroyWindow(win);


  63.     SDL_Quit();




  64.     return 0;


  65. }

编译gcc sdltest.c -o sdltest -lSDL2运行导入测试文件hello.bmp如下运行./sdltest可以看到加载显示了位图总结从以上可以看出,直接在开发板构建SDL,并进行应用编译开发,非常方便。所以使用本开发板可以任意选择各种技术栈进行开发,在进行多媒体终端开发时也有多种选择,非常方便,这得益于开发板运行完整的ubuntu系统和强劲的性能。





关键词: RK3588     SDL     GUI    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]