SDL2的编程理念清晰易用,代码简洁高效,这里用显式一副图片的最简代码来作为入门的示例,正式的教学可以搜索很多国内的教学网站。 上面的代码在编译的时候,因为使用了SDL2/SDL_image两个额外的附加库,所以在编译、执行代码之前,首先要安装这两个软件库。 在mac电脑上安装这两个库的命令是:brew install sdl2 sdl2_image。 如果不需要处理png图片,只是bmp图片,则不需要使用sdl2_image库,仅适用sdl2库即可。这个时候可以使用$(pkg-config --cflags --libs sdl2)。 sdl2也提供了自己的包参数工具sdl2-config可以完成类似的功能,但仅对自己有效,所以为了通用起见,我们还是使用pkg-config更方便一些。
下面主要介绍一下在Windows下搭建SDL2开发环境的过程。 下载 下载自SDL官网,在Development Libraries中选择相应的版本。 VS中的项目配置 SDL2说白了其实只是一个C语言库,因此配置他就跟配置其他任意的库一样,主要分为三步: 一、包含必需的头文件和库文件 因为我们需要能够include进SDL2的头文件,并且找到对应的实现代码 最后,针对SDL2还需要额外设置一个配置,就是程序的入口,具体原因不明。 配置方法就是修改项目->属性->配置属性->链接器->系统->子系统,内容改成"窗口 (/SUBSYSTEM:WINDOWS)"即可: 搞好上面这个配置,理论上就能跑SDL2的程序了,那我就直接把下面这个显示图片的程序作为
golang版本sdl2显示窗体go用syscall调用sdl2,在win10 x64上没问题,其他系统不敢保证。
golang版本sdl2显示窗体 go用syscall调用sdl2,在win10 x64上没问题,其他系统不敢保证。
程设大作业小火车第一版本是命令行界面,第二版本是图形化界面,由于egg库对以后工程开发没有用,我不想用egg库,花了很长时间浏览了一下OpenGL的中文教程,觉得好复杂,需要看很多很多才能写出个简单的图形化,于是我找了一个框架,SDL(Simple DirectMedia Layer),简单好用,对付我的大作业应该没问题了。
golang调用sdl2,播放yuv视频win10 x64下测试成功,其他操作系统下不保证成功。采用的是syscall方式,不是cgo方式。
这里使用较新的SDL2库进行编译安装。 三、下载编译SDL2 3.1 下载SDL2 下载地址: http://www.linuxfromscratch.org/blfs/view/cvs/multimedia/sdl2.html 3.2 share wbyq@wbyq:~/work_pc/SDL2-2.0.12/_install$ tree . ├── bin │ └── sdl2-config ├── include │ └── SDL2 ── SDL_version.h │ ├── SDL_video.h │ └── SDL_vulkan.h ├── lib │ ├── cmake │ │ └── SDL2 -I/home/wbyq/work_pc/SDL2-2.0.12/_install/include -I/home/wbyq/work_pc/SDL2-2.0.12/_install/include/SDL2
golang调用sdl2,键盘和鼠标事件win10 x64下测试成功,其他操作系统下不保证成功。采用的是syscall方式,不是cgo方式。见地址代码用golang编写。
golang调用sdl2,键盘和鼠标事件 win10 x64下测试成功,其他操作系统下不保证成功。 采用的是syscall方式,不是cgo方式。
注意:这里使用的是 SDL2-2.0.9 解压完后的文件目录.png 我们在根目录里面有看到,SDL2的源码,已经为我们配置好了多种的编译环境。包括Cmake 和Android.mk文件。 }/libs/SDL2) Ps:这里它的CMakeList.txt文件中富含大量逻辑是学习好资料。。 ,添加了 判断,如果是Android的话,就添加hidapi库,并将其连接到SDL2库中。 (SDL2 PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB") set_target_properties(SDL2 PROPERTIES STATIC_LIBRARY_FLAGS (SDL2 PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:include/SDL2>) if
https://github.com/gongluck/SDL2-study/tree/master/Csdl2
===================================================== SDL源代码分析系列文章上市: SDL2源码分析1:初始化(SDL_Init()) SDL2源码分析 2:窗体(SDL_Window) SDL2源码分析3:渲染器(SDL_Renderer) SDL2源码分析4:纹理(SDL_Texture) SDL2源码分析5:更新纹理(SDL_UpdateTexture ()) SDL2源码分析6:拷贝到渲染器(SDL_RenderCopy()) SDL2源码分析7:显示(SDL_RenderPresent()) SDL2源码分析8:视频显示总结 ===========
SDL初始化 SDL_Init(): 初始化SDL。 SDL_OpenAudio(): 打开音频播放器。 SDL_PauseAudio(): 开始播放。 SDL循环渲染数据 调用callback,将正确的数据喂入
https://github.com/deepsadness/SDLCmakeDemo 系列内容导读 SDL2-移植Android Studio+CMakeList集成 Android端FFmpeg +SDL2 的简单播放器 SDL2 Android端的简要分析 Android 部分源码分析 暂时只包括视频系统的部分。 protected String[] getLibraries() { return new String[]{ "SDL2", SDL_UpdateTexture() * \sa SDL_DestroyTexture() */ SDL循环渲染数据 update_circle.png 总结 image.png 参考 雷神SDL2
===================================================== SDL源代码分析系列文章上市: SDL2源码分析1:初始化(SDL_Init()) SDL2源码分析 2:窗体(SDL_Window) SDL2源码分析3:渲染器(SDL_Renderer) SDL2源码分析4:纹理(SDL_Texture) SDL2源码分析5:更新纹理(SDL_UpdateTexture ()) SDL2源码分析6:拷贝到渲染器(SDL_RenderCopy()) SDL2源码分析7:显示(SDL_RenderPresent()) SDL2源码分析8:视频显示总结 =========== SDL_Renderer SDL_Renderer结构体定义了一个SDL2中的渲染器。假设直接使用SDL2编译好的SDK的话。是看不到它的内部结构的。 有关它的定义在头文件里仅仅有一行代码。
golang调用sdl2,播放pcm音频,报错signal arrived during external code execution。win10 x64下测试成功,其他操作系统下不保证成功。
ffplay_g和在xcode中进行源码debug的步骤 编译环境 Mac m1、FFmpeg 5.1.2、xcode13.4.1 选择使用FFmpeg最新版本5.1.2的原因是ffplay的编译依赖sdl2 ,通过brew安装sdl2的版本为最新的2.24.0,只有FFmpeg5.1.2+的版本才能匹配上 (ffplay的编译依赖sdl2) (sdl2的版本要求) 编译ffplay 首先需要安装sdl2 brew install sdl2 然后进入下载的FFmpeg5.1.2的源码根目录,在终端中执行: .
main SDL2 GLESv1_CM GLESv2 ffmpeg # Links the target library
exists --print-errors sdl check_func_headers SDL_version.h SDL_Linked_Version -I/usr/include/SDL2 -I/usr/X11R6/include -D_THREAD_SAFE -L/usr/lib -lSDL2 check_ld cc -I/usr/include/SDL2 -I/usr -I/usr/X11R6/include -D_THREAD_SAFE check_cpp -I/usr/local/include/SDL2 -I/usr/X11R6/include -I/usr/X11R6/include -D_THREAD_SAFE check_cpp -I/usr/local/include/SDL2 -I/usr/X11R6/include 的初步对比,发现SDL2与SDL1差别还是蛮大的,要改libavdevice也是力气活,所以如果SDL1不影响太多的话,还是用SDL1吧
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # Find SDL2 find_package(SDL2 REQUIRED) ::Main SDL2::Net SDL2::Image SDL2::Mixer SDL2::TTF m) file(COPY res DESTINATION list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2) 这一行将当前目录下的cmake/sdl2目录添加到CMAKE_MODULE_PATH 变量中,以便CMake能够找到SDL2相关的模块。 这里链接了SDL2的多个库(如SDL2::Main, SDL2::Net等)以及m库(通常是数学库)。