SDL环境搭建和测试

SDL环境搭建和测试

#ffmpeg/sdl/环境搭建#

零、环境搭建

  1. 去 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)。解压缩。

  2. 下面主要用到的有两个文件夹,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语言,跨平台,开源媒体库,游戏,播放器里面比较常用。

二、工作流程

常用的函数有

  1. 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 \
  1. 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;

}

猜你喜欢

转载自blog.csdn.net/qq_26144489/article/details/114282955