SDL环境搭建和测试
#ffmpeg/sdl/环境搭建#
零、环境搭建
-
去 http://www.libsdl.org/download-2.0.php 官方网站下载,我目前的环境是win10+vs2015,所以下载development libraries 下的http://www.libsdl.org/release/SDL2-devel-2.0.14-VC.zip (Visual C++ 32/64-bit)。解压缩。
-
下面主要用到的有两个文件夹,includes和lib,对vs的设置和ffmpeg差不多。先 解决方案资源管理器 右键,切换到工程属性。
(我这里是对vs的文件夹结构进行了更改。可以参考着看。)
-
配置属性->调式->工作目录->
$(ProjectDir)
-
配置属性->调式->工作目录->
PATH=$(ProjectDir)lib;%PATH% $(LocalDebuggerEnvironment)
-
c/c+±>附加包含目录->
$(ProjectDir)include;%(AdditionalIncludeDirectories)
-
链接器->常规->附加库目录->
$(ProjectDir)lib
-
链接器->常规->附加依赖项->添加SDL2.lib
SDL2main.lib
SDL2test.lib(不必要)
拷贝文件如下:
-
在工程目录下的include里面新建一个sdl文件夹,把sdl解压缩后的文件夹下面的include文件夹拷贝进sdl文件夹里面。
-
把解压缩后的文件夹下面的lib文件夹所有内容,拷贝到工程目录下的lib文件夹里面。
这样,环境就搭建好了。
一、 概念
SDL (simple directMedia Layer):c语言,跨平台,开源媒体库,游戏,播放器里面比较常用。
二、工作流程
常用的函数有
SDL_Init/SDL_Quit()
: init函数的参数如下
#define SDL_INIT_TIMER 0x00000001u
#define SDL_INIT_AUDIO 0x00000010u
#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
#define SDL_INIT_HAPTIC 0x00001000u
#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
#define SDL_INIT_EVENTS 0x00004000u
#define SDL_INIT_SENSOR 0x00008000u
#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */
#define SDL_INIT_EVERYTHING ( \
SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \
SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \
SDL_CreateWindow()/SDL_DestroWindow
窗口创建和销毁
create函数最后一个参数列表为
SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */
SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */
SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */
SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */
SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */
SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */
SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */
SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */
SDL_WINDOW_INPUT_GRABBED = 0x00000100, /**< window has grabbed input focus */
SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */
SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */
SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ),
SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */
SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported.
On macOS NSHighResolutionCapable must be set true in the
application's Info.plist for this to have any effect. */
SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to INPUT_GRABBED) */
SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */
SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */
SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */
SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */
SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */
SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */
SDL_WINDOW_METAL = 0x20000000 /**< window usable for Metal view */
示例代码:
#include "stdafx.h"
#include <sdl\SDL.h>
int main(int argc, char **argv)
{
SDL_Window *window;
SDL_Init(SDL_INIT_EVERYTHING);
window = SDL_CreateWindow("sdl window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_OPENGL);
if (!window)
{
fprintf(stderr, "cant create sdl windows ,err is %s", SDL_GetError);
return -1;
}
SDL_Delay(3000);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}