SDL2.0比較淺的學習教程


來自http://tieba.baidu.com/p/2967590846

#include "SDL2\SDL.h"
#include "SDL2\SDL_image.h"
#undef main
int main(int argc, char* args[])
{
SDL_Window *p = NULL;/*窗口*/
SDL_Renderer *px = NULL;/*渲染器*/
SDL_Surface *t = NULL;
SDL_Surface *t2 = NULL;
SDL_Texture *ps = NULL;/*硬件加速器*/
SDL_Init(SDL_INIT_EVERYTHING);
p = SDL_CreateWindow("Hello World!", 100, 100, 565, 67, SDL_WINDOW_RESIZABLE);/*能讓我們繪制的窗口前兩個參數控制窗口位置,然后是窗口大小 再然后是位標(falg)*/
t = IMG_Load("../Debug/SDL1.jpg");
px = SDL_CreateRenderer(p, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);/*渲染器 第一個位標表示顯卡 -1表示從顯卡中挑一個 第二個表示以顯示器的刷新率來刷新畫面*/
ps = SDL_CreateTextureFromSurface(px, t);/*使用硬件加速*/
SDL_FreeSurface(t );
SDL_RenderClear(px); /*清空屏幕*/
SDL_RenderCopy(px, ps , NULL, NULL); /*顯示*/
SDL_RenderPresent(px );/*更新屏幕*/
SDL_Delay(20000);
SDL_DestroyTexture(ps);/*釋放內存*/
SDL_DestroyRenderer(px );
SDL_DestroyWindow(p );
SDL_Quit();
return 0;
}
程序講解
SDL_Renderer 類型
*SDl_CreateRenderer(窗口,-1,falg);
{創建一個2D渲染窗口
SDL_RENDERER_ACCELERATED 使用硬件加速 如果使用了硬件加速那么必須使用SDL_Texture(SDL_Texture* SDL_CreateTextureFromSurface(渲染器,現有的圖);從現有的圖創建一個硬件加速紋理)
SDL_RENDERER_PRESENTVSYNC 使用和窗口的同步頻率
SDL_RENDERER_TARGETTEXTURE 渲染器支持渲染紋理
SDL_RENDERER_SOFTWARE 渲染器是一種軟件后退


渲染器說明:用來在窗口中繪圖的
SDL_Window 類型
SDL_Window *SDL_CreateWindow();

“窗口標題,x,y,寬,高,falg”
SDL_WINDOW_FULLSCREEN 全屏窗口
SDL_WINDOW_FULLSCREEN_DESKTOP 全屏窗口在當前桌面分辨率
SDL_WINDOW_OPENGL 與OpenGL窗口可用的上下文
SDL_WINDOW_HIDDEN 窗口不可見
SDL_WINDOW_SHOWN 窗口是可見的
SDL_WINDOW_BORDERLESS 沒有窗口裝飾
SDL_WINDOW_RESIZABLE 窗口可以調整大小
SDL_WINDOW_MINIMIZED 窗口最小化
SDL_WINDOW_MAXIMIZED 窗口最大化
SDL_WINDOW_INPUT_GRABBED 窗口有輸入焦點
SDL_WINDOW_ALLOW_HIGHDPI 窗口應該創建在high-DPI模式如果支持(> = SDL 2.0.1)

SDL_Rect pos;
SDL_Texture 類型
SDL_QueryTexture(SDL_Texture*紋理, NULL, NULL, &pos.w, &pos.h); 指定圖像硬件的紋理繪制位置

SDL_RenderCopy(SDL_Renderer*渲染器, SDL_Texture*硬件加速, NULL, &pos); 把硬件加速的紋理復制給渲染器
SDL_RenderClear(窗口);清空窗口
SDL_RenderCopy(窗口, 硬件紋理, NULL, NULL);
SDL_RenderPresent(窗口);更新窗口
關於SDL_RendererCopy();中的NULL
SDL_RendererCopy 第一個NULL表示需要繪制的圖像的大小 NULL空表示全部繪制
第二個NULL表示繪制在屏幕上的位置為空是 則繪制整個屏幕
SDL_Destroy(窗口或者圖像或者渲染或者紋理);釋放窗口內存
SDL_Quit();退出SDL


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM