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

网上大多教程教的比较浅 以下部分是我结合教程和自己上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
SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口以实现3D图形。从这些属性我们可以看出,SDL基本上可以认为是为以电脑游戏为核心开发的多媒体库。 SDL支持主流的操作系统,包括Windows和Linux。在官方的介绍中,我们可以找到它所支持的其他平台。(SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. )。SDL本身从C语言开发,并且能很好的在C++等高级语言中使用。在官方可以看到SDL所支持的语言很多。(Including Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk, and Tcl. ) SDL在GNU LGPL version 2下发布,这意味着你可以免费的使用。并且可以免费的用于商业软件的制作(只要你直接使用SDL的动态链接库,Windows下的SDL.dll)。如果你将SDL库编译进了自己的二进制代码中,你需要指明你所使用的SDL库的版本以及包括你自己修改的源代码,并说明这些代码的原始出处。这是很宽松的法律,你可以用如此强大的多媒体库完全合法的免费开发商业游戏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值