SDL2音视频渲染入门
生活随笔
收集整理的這篇文章主要介紹了
SDL2音视频渲染入门
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SDL, “Simple DirectMedia Layer”,它是一套開放源代碼的跨平臺多媒體開發庫,使用C語言寫成。其主要用于游戲開發中的多媒體處理,如視頻渲染,音頻播放,鼠標/鍵盤控制等操作。它對外接供了一套統一的接口,但在內部,它會根據不同平臺調用不同的底層 API庫。如在 Linux 系統下,它會使用 opengl 做渲染,而在 Window 下它會調用 D3D API進行渲染。
SDL2安裝
SDL官網下載:www.libsdl.org/download-2.…
下載Source Code(以后去看源代碼也比較方便),然后進行編譯安裝:
configure --prefix=/usr/local 復制代碼 sudo make && make install 復制代碼在/usr/local下就可以找到編譯后的SDL2相關文件
SDL2使用
運行環境Windows + CLion,代碼通用,不同平臺只需要更改依賴的SDL庫即可
CMakeList
cmake_minimum_required(VERSION 3.12) project(SimplePlayer C)set(CMAKE_C_STANDARD 99) set(SOURCE_FILES main.c)# 這里我使用的是自己機器上安裝的SDL庫,根據自己的安裝路徑替換 set(INC_DIR_SDL C:/cygwin64/usr/local/include/SDL2/) set(LINK_DIR_SDL C:/cygwin64/usr/local/lib/)include_directories(${INC_DIR_SDL}) link_directories(${LINK_DIR_SDL})add_executable(SimplePlayer ${SOURCE_FILES}) target_link_libraries(SimplePlayerSDL2SDL2main) 復制代碼SDL的基本流程
1、初始化SDL
2、創建窗口
3、創建渲染器
4、清空緩沖區
5、繪制要顯示的內容
6、最終將緩沖區內容渲染到window窗口上
7、銷毀渲染器
8、銷毀窗口
9、退出SDL
下面是一個最簡單的SDL程序,會顯示一個640*480的窗口,窗口內部為紅色,顯示3秒后消失
int WinMain() {SDL_Window *window = NULL;SDL_Renderer *renderer = NULL;SDL_Init(SDL_INIT_VIDEO);// 初始化函數,可以確定希望激活的子系統window = SDL_CreateWindow("My First Window",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,640,480,SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);// 創建窗口if (!window) {return -1;}renderer = SDL_CreateRenderer(window, -1, 0);//基于窗口創建渲染器if (!renderer) {return -1;}SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); //設置渲染器顏色 r、g、b、aSDL_RenderClear(renderer);//用指定的顏色清空緩沖區SDL_RenderPresent(renderer); //將緩沖區中的內容輸出到目標窗口上。SDL_Delay(3000); // 延時3秒SDL_DestroyRenderer(renderer); //銷毀渲染器SDL_DestroyWindow(window); //銷毀窗口SDL_Quit(); //退出SDLreturn 0; } 復制代碼SDL API簡介
SDL_Init 初始化
int SDL_Init(Uint32 flags) 復制代碼flages: SDL_INIT_TIMER 定時器子系統 SDL_INIT_AUDIO 音頻子系統 SDL_INIT_VIDEO 視頻子系統,同時會初始化事件子系統 SDL_INIT_EVENTS 事件子系統 SDL_INIT_EVERYTHING 初始化所有子系統= 復制代碼SDL_CreateWindow 創建窗口
SDL_Window* SDL_CreateWindow(const char *title,int x, int y, int w,int h, Uint32 flags); 復制代碼title:窗口標題 x,y,w,h:窗口坐標 flags:::SDL_WINDOW_FULLSCREEN,//全屏 ::SDL_WINDOW_OPENGL,//使用OpenGL上下文::SDL_WINDOW_HIDDEN, //窗口不可見 ::SDL_WINDOW_BORDERLESS, //無邊框::SDL_WINDOW_RESIZABLE,//窗口大小可變 ::SDL_WINDOW_MAXIMIZED, //窗口最大化::SDL_WINDOW_MINIMIZED,//窗口最小化 ::SDL_WINDOW_INPUT_GRABBED,//輸入捕獲 復制代碼SDL_CreateRenderer 創建渲染器
SDL_Renderer* SDL_CreateRenderer(SDL_Window* window,int index,Uint32 flags) 復制代碼window: 指明在哪個窗口里進行渲染 index: 指定渲染驅動的索引號。一般指定為 -1. flags:SDL_RENDERER_SOFTWARE //The renderer is a software fallback 軟件備份SDL_RENDERER_ACCELERATED //The renderer uses hardware acceleration 硬件加速SDL_RENDERER_PRESENTVSYNC //Present is synchronized with the refresh rate 刷新率同步SDL_RENDERER_TARGETTEXTURE //The renderer supports rendering to texture 支持渲染紋理 復制代碼總結
以上是生活随笔為你收集整理的SDL2音视频渲染入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 歌词解析
- 下一篇: 计算机术语中的letters表示,let