您的位置:首页 > 其它

SDL2.0自己整理的学习教程+自己的学习笔记

2014-07-03 18:28 357 查看
网上大多教程教的比较浅 以下部分是我结合教程和自己上SDL官网一个一个找出来翻译的写的比较乱见谅

第一章hello

喜欢先发代码在分析

#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐