SDL2的学习之路

工作之余的爱好<闲的~>,自己玩了下几个游戏开发的引擎<白鹭(h5的其余都c++的),easy2d(简单易上手),sdl2,sfml等,后续打算都写写怎么用的,看大家的反响(看自己懒惰程度)>,也自己基于d3d写了个简单的引擎,还去玩了下UE4这种成熟完善的引擎,玩的多了,记不住了,来记录且分享下,希望跟大家一起交流成长,废话不多,注重简洁明了(我懒)

SDL2的下载

官网下载地址:http://www.libsdl.org
需要注意的是,除了基本的sdl库,还需要另外两个非常有用的库,
sdl2_image和sdl2_ttf。这两个分别是用来加载图片和字体的。sdl本身仅有对bmp格式图片的处理,没有对png,jpeg,gif等其它格式图片的处理接口。还有更多sdl扩展库,如sdl_net网络支持,SDL_mixer更多音频的支持等,这些暂时用不到,后续学习用到再说。
扩展库和SDL库在github都能下载到,这里不做重点。

SDL2的项目配置

用这个的应该都会的,不多写~
有一点小坑需要注意,就是需要在项目中配置SDL目录,不要直接在包含的地方写相对或者绝对路径,就是最好是直接写include “SDL.h”,不要写include “…/sdl2_xx.xx/include/SDL.h”,因为扩展库SDL_image里也会用到sdl.h文件,如果不在项目工程中配置好,会编译报错。

开始创建窗口

sdl是直接接管窗口的创建的,方便菜鸟<我>的使用,不方便大神<各位看官>的自由发挥。
惯例,开头包含头文件

#include "SDL.h"
#include "SDL_image.h"
#include "SDL_ttf.h"

链接库

#pragma comment(lib,"SDL2.lib")
#pragma comment(lib,"SDL2main.lib")
#pragma comment(lib,"SDL2_image.lib")
#pragma comment(lib,"SDL2_ttf.lib")

main函数

//这里使用vs创建的项目,项目创建的时候类型需要选择窗口而不是控制台
//这里注意需要带上参数int, char**,否则会编译报错,这是因为这个是窗口而不是控制台项目
int main(int, char**)
{//初始化SDL引擎//0成功,负值失败,所有sdl失败的原因都可以根据SDL_GetError()获得//SDL_INIT_EVERYTHING这个参数表示一次性将音视频,计时器,事件等都初始化好SDL_Init(SDL_INIT_EVERYTHING);//创建窗口/*基本需要用到的也就是窗口标题:第一个参数窗口的大小:下面代码中的800是宽,600是高SDL_WINDOW_OPENGL 是启用opengl渲染创建失败则返回空指针NULL*/SDL_Window* window = SDL_CreateWindow("SDL Game", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,800, 600, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_SHOWN);//创建渲染结构/*失败则返回空指针NULL第三个参数需要注意下,    值SDL_RENDERER_PRESENTVSYNC不建议使用,这个使用了就不会按你设置的帧频去渲染了,而是按显示器的更新频率去渲染SDL_RENDERER_ACCELERATED这个值表示启用硬件加速,如果电脑不支持,开了也白开- -*/SDL_Renderer* render = SDL_CreateRenderer(m_window, -1, SDL_RENDERER_ACCELERATED);bool quit = false;//循环窗口,不加循环窗口就咻的一下没了- -while(!quit){//循环处理事件SDL_Event event;while(SDL_PollEvent(&event)){if (event.type == SDL_QUIT)quit = true;//这里可以其它事件处理了}//这里可以开始更新事件//onUpdate();//更新完可以渲染界面了SDL_RenderClear(render);//更新你的图片,字体....//结束绘制,渲染到屏幕//如果创建渲染的时候加了SDL_RENDERER_PRESENTVSYNC这个参数,那么这个地方就不会立马渲染到屏幕SDL_RenderPresent(render);//这里需要让CPU去喝口水上个厕所- -//自己设置帧频的时候需要在这里计算delay的时间SDL_Delay(10);}//窗口关闭,开始让SDL清理自己遗留的现场了//看完球赛,带走垃圾,保护环境,人人有责SDL_DestroyRenderer(render);SDL_DestroyWindow(window);SDL_Quit();return 0;
}

这里基本的窗口就创建完毕了,编译完毕就可以启动看到一个黑洞的的窗口了,窗口如宇宙,待你去探究,添加日月星辰,让其徜徉太空随尔心尔欲。

本小节结束

窗口创建结束,SDL_image和SDL_ttf这节其实都没用上。下节先显示图片,开始在宇宙中创造生命吧。

SDL2的学习之路<一> 创建基本窗口相关推荐

  1. ZYNQ学习之路13.创建PetaLinux工程

    在前面的学习中,我们知道如何根据PetaLinux BSP设计去创建一个工程,现在,我们结合Vivado设计我们自己PetaLinux系统. 开发环境:Ubuntu16 64bit, PetaLinu ...

  2. Qt学习之路(60): 创建shared library

    前段时间说了Qt一些类库的使用,今天来换一下口味,来看一下程序设计的问题.今天来说的是关于共享库 shared library. 如果你打开一些 Windows 应用程序的目录,你会发现有很多程序的 ...

  3. ros和java通讯_ROS学习之路(二)——通信架构(上)

    1. master&&node mater中文名又称为节点管理器,作为管家管理所需要的进程,其作用有两个: 每个node启动时都要向master注册. 管理node之间的通信. nod ...

  4. Docker学习之路 用commit命令创建镜像

    Docker学习之路 用commit命令创建镜像 docker 74k 次阅读 · 读完需要 7 分钟 假期快要结束了,干点正事,接着Docker的学习. 构建镜像 构建镜像的两种方法: 使用dock ...

  5. Kubernetes学习之路(一)之概念和架构解析和证书创建和分发

    1.Kubernetes的重要概念 转自:CloudMan老师公众号<每天5分钟玩转Kubernetes>https://item.jd.com/26225745440.html Clus ...

  6. Java学习之路1——安装JDK1.8||安装idea2022||Java项目创建【重拾Java】

    Java学习之路1--安装JDK1.8||安装idea2022[重拾Java] 前言 安装 安装JDK1.8 安装idea2022(JetBrains Toolbox) Java项目创建 创建 项目结 ...

  7. Docker学习之路04:创建定制Nginx镜像

    Docker学习之路04:创建定制Nginx镜像 Docker学习路线传送门: Docker学习之路01:Docker的安装 Docker学习之路02:阿里云镜像加速器 Docker学习之路03:Do ...

  8. 前端Vue学习之路(二)-Vue-router路由

    Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...

  9. 前端Vue学习之路(一)-初识Vue

    Vue学习之路 (一) 1.引言 2.更换npm国内镜像源 3.用npm下载Vue 4.Vue全家桶 5.使用命令创建项目 5.推荐插件 6.推荐网站 7.学习扩展 1.引言 先安装node.js环境 ...

最新文章

  1. springboot_4 spring boot 使用servlet,filter,listener和interceptor
  2. Android --- 两种设置字体加粗的方法
  3. java代码里的JSON格式怎么写好看_谁会不爱让代码骚里骚气的VSCode扩展插件呢?...
  4. 三星S5 电信版(G9009D)Android 5.0系统,root教程【亲测可行】
  5. 第四章 Rails 背后的 Ruby
  6. WebView 文档 翻译
  7. java xml解析_Java解析XML(4种方法)
  8. 视觉推理新杀器!英特尔新一代VPU性能翻10倍,反超英伟达
  9. win10如何截屏_6个Win10系统使用小技巧,对你一定有用!
  10. “挖坑填坑”理解快速排序
  11. php1106打印机怎么使用,1106打印机驱动使用说明
  12. linux kernel 内存相关记录
  13. Unity资源缓存(内存)
  14. 洛谷 Cantor 表
  15. HashMap底层详讲
  16. PyCharm激活记录
  17. 新南威尔士大学COMP9021 QUIZ1课业解析
  18. Windows10编译MySQL8.0.28源码
  19. 信号重采样 matlab,信号的重采样
  20. Redis 小白指南(一)- 简介、安装、GUI 和 C# 驱动介绍

热门文章

  1. node安装以及环境变量配置
  2. win11安装node并且配置环境变量
  3. satisfactory 幸福工厂
  4. AI不仅能画画,还能编和弦了:谷歌这几年取得了哪些艺术成就?
  5. 文本数据可视化_非结构化文本数据的分析和可视化
  6. canvas合并两张图片--前端
  7. 卡片式设计_总结及实践记录
  8. 大话西游手游地宫简单亮灯以及打法
  9. 802.11 - QoS Management
  10. React Fiber架构原理剖析