zoukankan      html  css  js  c++  java
  • SDL2学习(二):常用枚举值和函数

    1. 高频枚举值或结构体

    1.1 SDL_WindowFlags

    /**
     *  rief The flags on a window
     *
     *  sa SDL_GetWindowFlags()
     */
    typedef enum
    {
        /* !!! FIXME: change this to name = (1<<x). */
        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_WindowFlags;
    

    这个枚举值主要是和窗口相关的属性。

    1.2 SDL_RendererFlags

    typedef enum
    {
        SDL_RENDERER_SOFTWARE = 0x00000001,         /**< The renderer is a software fallback */
        SDL_RENDERER_ACCELERATED = 0x00000002,      /**< The renderer uses hardware
                                                         acceleration */
        SDL_RENDERER_PRESENTVSYNC = 0x00000004,     /**< Present is synchronized
                                                         with the refresh rate */
        SDL_RENDERER_TARGETTEXTURE = 0x00000008     /**< The renderer supports
                                                         rendering to texture */
    } SDL_RendererFlags;
    

    和SDL_Renderer属性相关。

    1.3 SDL_EventType

    /**
     * rief The types of events that can be delivered.
     */
    typedef enum
    {
        SDL_FIRSTEVENT     = 0,     /**< Unused (do not remove) */
    
        /* Application events */
        SDL_QUIT           = 0x100, /**< User-requested quit */
    
        /* These application events have special meaning on iOS, see README-ios.md for details */
        SDL_APP_TERMINATING,        /**< The application is being terminated by the OS
                                         Called on iOS in applicationWillTerminate()
                                         Called on Android in onDestroy()
                                    */
        SDL_APP_LOWMEMORY,          /**< The application is low on memory, free memory if possible.
                                         Called on iOS in applicationDidReceiveMemoryWarning()
                                         Called on Android in onLowMemory()
                                    */
        SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
                                         Called on iOS in applicationWillResignActive()
                                         Called on Android in onPause()
                                    */
        SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
                                         Called on iOS in applicationDidEnterBackground()
                                         Called on Android in onPause()
                                    */
        SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
                                         Called on iOS in applicationWillEnterForeground()
                                         Called on Android in onResume()
                                    */
        SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
                                         Called on iOS in applicationDidBecomeActive()
                                         Called on Android in onResume()
                                    */
    
        /* Display events */
        SDL_DISPLAYEVENT   = 0x150,  /**< Display state change */
    
        /* Window events */
        SDL_WINDOWEVENT    = 0x200, /**< Window state change */
        SDL_SYSWMEVENT,             /**< System specific event */
    
        /* Keyboard events */
        SDL_KEYDOWN        = 0x300, /**< Key pressed */
        SDL_KEYUP,                  /**< Key released */
        SDL_TEXTEDITING,            /**< Keyboard text editing (composition) */
        SDL_TEXTINPUT,              /**< Keyboard text input */
        SDL_KEYMAPCHANGED,          /**< Keymap changed due to a system event such as an
                                         input language or keyboard layout change.
                                    */
    
        /* Mouse events */
        SDL_MOUSEMOTION    = 0x400, /**< Mouse moved */
        SDL_MOUSEBUTTONDOWN,        /**< Mouse button pressed */
        SDL_MOUSEBUTTONUP,          /**< Mouse button released */
        SDL_MOUSEWHEEL,             /**< Mouse wheel motion */
    
        /* Joystick events */
        SDL_JOYAXISMOTION  = 0x600, /**< Joystick axis motion */
        SDL_JOYBALLMOTION,          /**< Joystick trackball motion */
        SDL_JOYHATMOTION,           /**< Joystick hat position change */
        SDL_JOYBUTTONDOWN,          /**< Joystick button pressed */
        SDL_JOYBUTTONUP,            /**< Joystick button released */
        SDL_JOYDEVICEADDED,         /**< A new joystick has been inserted into the system */
        SDL_JOYDEVICEREMOVED,       /**< An opened joystick has been removed */
    
        /* Game controller events */
        SDL_CONTROLLERAXISMOTION  = 0x650, /**< Game controller axis motion */
        SDL_CONTROLLERBUTTONDOWN,          /**< Game controller button pressed */
        SDL_CONTROLLERBUTTONUP,            /**< Game controller button released */
        SDL_CONTROLLERDEVICEADDED,         /**< A new Game controller has been inserted into the system */
        SDL_CONTROLLERDEVICEREMOVED,       /**< An opened Game controller has been removed */
        SDL_CONTROLLERDEVICEREMAPPED,      /**< The controller mapping was updated */
    
        /* Touch events */
        SDL_FINGERDOWN      = 0x700,
        SDL_FINGERUP,
        SDL_FINGERMOTION,
    
        /* Gesture events */
        SDL_DOLLARGESTURE   = 0x800,
        SDL_DOLLARRECORD,
        SDL_MULTIGESTURE,
    
        /* Clipboard events */
        SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
    
        /* Drag and drop events */
        SDL_DROPFILE        = 0x1000, /**< The system requests a file open */
        SDL_DROPTEXT,                 /**< text/plain drag-and-drop event */
        SDL_DROPBEGIN,                /**< A new set of drops is beginning (NULL filename) */
        SDL_DROPCOMPLETE,             /**< Current set of drops is now complete (NULL filename) */
    
        /* Audio hotplug events */
        SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
        SDL_AUDIODEVICEREMOVED,        /**< An audio device has been removed. */
    
        /* Sensor events */
        SDL_SENSORUPDATE = 0x1200,     /**< A sensor was updated */
    
        /* Render events */
        SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
        SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
    
        /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
         *  and should be allocated with SDL_RegisterEvents()
         */
        SDL_USEREVENT    = 0x8000,
    
        /**
         *  This last event is only for bounding internal arrays
         */
        SDL_LASTEVENT    = 0xFFFF
    } SDL_EventType;
    

    这个就是SDL事件代号,SDL_Event结构体中的type属性。

    1.4 SDL_WindowEventID

    /**
     *  rief Event subtype for window events
     */
    typedef enum
    {
        SDL_WINDOWEVENT_NONE,           /**< Never used */
        SDL_WINDOWEVENT_SHOWN,          /**< Window has been shown */
        SDL_WINDOWEVENT_HIDDEN,         /**< Window has been hidden */
        SDL_WINDOWEVENT_EXPOSED,        /**< Window has been exposed and should be
                                             redrawn */
        SDL_WINDOWEVENT_MOVED,          /**< Window has been moved to data1, data2
                                         */
        SDL_WINDOWEVENT_RESIZED,        /**< Window has been resized to data1xdata2 */
        SDL_WINDOWEVENT_SIZE_CHANGED,   /**< The window size has changed, either as
                                             a result of an API call or through the
                                             system or user changing the window size. */
        SDL_WINDOWEVENT_MINIMIZED,      /**< Window has been minimized */
        SDL_WINDOWEVENT_MAXIMIZED,      /**< Window has been maximized */
        SDL_WINDOWEVENT_RESTORED,       /**< Window has been restored to normal size
                                             and position */
        SDL_WINDOWEVENT_ENTER,          /**< Window has gained mouse focus */
        SDL_WINDOWEVENT_LEAVE,          /**< Window has lost mouse focus */
        SDL_WINDOWEVENT_FOCUS_GAINED,   /**< Window has gained keyboard focus */
        SDL_WINDOWEVENT_FOCUS_LOST,     /**< Window has lost keyboard focus */
        SDL_WINDOWEVENT_CLOSE,          /**< The window manager requests that the window be closed */
        SDL_WINDOWEVENT_TAKE_FOCUS,     /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */
        SDL_WINDOWEVENT_HIT_TEST        /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */
    } SDL_WindowEventID;
    

    窗口事件代码。

    1.5 SDL_Event

    /**
     *  rief General event structure
     */
    typedef union SDL_Event
    {
        Uint32 type;                    /**< Event type, shared with all events */
        SDL_CommonEvent common;         /**< Common event data */
        SDL_DisplayEvent display;       /**< Window event data */
        SDL_WindowEvent window;         /**< Window event data */
        SDL_KeyboardEvent key;          /**< Keyboard event data */
        SDL_TextEditingEvent edit;      /**< Text editing event data */
        SDL_TextInputEvent text;        /**< Text input event data */
        SDL_MouseMotionEvent motion;    /**< Mouse motion event data */
        SDL_MouseButtonEvent button;    /**< Mouse button event data */
        SDL_MouseWheelEvent wheel;      /**< Mouse wheel event data */
        SDL_JoyAxisEvent jaxis;         /**< Joystick axis event data */
        SDL_JoyBallEvent jball;         /**< Joystick ball event data */
        SDL_JoyHatEvent jhat;           /**< Joystick hat event data */
        SDL_JoyButtonEvent jbutton;     /**< Joystick button event data */
        SDL_JoyDeviceEvent jdevice;     /**< Joystick device change event data */
        SDL_ControllerAxisEvent caxis;      /**< Game Controller axis event data */
        SDL_ControllerButtonEvent cbutton;  /**< Game Controller button event data */
        SDL_ControllerDeviceEvent cdevice;  /**< Game Controller device event data */
        SDL_AudioDeviceEvent adevice;   /**< Audio device event data */
        SDL_SensorEvent sensor;         /**< Sensor event data */
        SDL_QuitEvent quit;             /**< Quit request event data */
        SDL_UserEvent user;             /**< Custom event data */
        SDL_SysWMEvent syswm;           /**< System dependent window event data */
        SDL_TouchFingerEvent tfinger;   /**< Touch finger event data */
        SDL_MultiGestureEvent mgesture; /**< Gesture event data */
        SDL_DollarGestureEvent dgesture; /**< Gesture event data */
        SDL_DropEvent drop;             /**< Drag and drop event data */
    
        /* This is necessary for ABI compatibility between Visual C++ and GCC
           Visual C++ will respect the push pack pragma and use 52 bytes for
           this structure, and GCC will use the alignment of the largest datatype
           within the union, which is 8 bytes.
    
           So... we'll add padding to force the size to be 56 bytes for both.
        */
        Uint8 padding[56];
    } SDL_Event;
    

    当然SDL2还有很多其他的结构体或枚举值,这里只是列出初学者很常见的几个。

    2. 窗口管理相关的函数

    初学时,接触比较多的是窗口相关的函数,但是数量也是挺多的。

    SDL_Init

    说明:初始化SDL库,内部调用了SDL_InitSubSystem()。在进行任何SDL操作前,必须先调用此函数初始化。
    参数:falgs标识子系统编号。
    返回值:成功返回0,失败返回负值

    /* As of version 0.5, SDL is loaded dynamically into the application */
    
    /**
     *  
    ame SDL_INIT_*
     *
     *  These are the flags which may be passed to SDL_Init().  You should
     *  specify the subsystems which you will be using in your application.
     */
    /* @{ */
    #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 
                )
    /* @} */
    
    /**
     *  This function initializes  the subsystems specified by c flags
     */
    extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);
    

    SDL_Quit

    说明:清理初始化的子系统
    参数:无
    返回值:无

     *  This function cleans up all initialized subsystems. You should
     *  call it upon all exit conditions.
     */
    extern DECLSPEC void SDLCALL SDL_Quit(void);
    

    SDL_CreateWindow

    说明:创建一个窗口
    参数:  title:窗口标题; x:SDL_WINDOWPOS_CENTERED(居中)或SDL_WINDOWPOS_UNDEFINED(未定义);y:同x; w:窗口宽度; h:窗口高度; flags:即上面的SDL_WindowFlags。
    返回值:窗口SDL_window指针

    /**
     *  rief Create a window with the specified position, dimensions, and flags.
     *
     *  param title The title of the window, in UTF-8 encoding.
     *  param x     The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
     *               ::SDL_WINDOWPOS_UNDEFINED.
     *  param y     The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
     *               ::SDL_WINDOWPOS_UNDEFINED.
     *  param w     The width of the window, in screen coordinates.
     *  param h     The height of the window, in screen coordinates.
     *  param flags The flags for the window, a mask of any of the following:
     *               ::SDL_WINDOW_FULLSCREEN,    ::SDL_WINDOW_OPENGL,
     *               ::SDL_WINDOW_HIDDEN,        ::SDL_WINDOW_BORDERLESS,
     *               ::SDL_WINDOW_RESIZABLE,     ::SDL_WINDOW_MAXIMIZED,
     *               ::SDL_WINDOW_MINIMIZED,     ::SDL_WINDOW_INPUT_GRABBED,
     *               ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN.
     *
     *  
    eturn The created window, or NULL if window creation failed.
     *
     *  If the window is created with the SDL_WINDOW_ALLOW_HIGHDPI flag, its size
     *  in pixels may differ from its size in screen coordinates on platforms with
     *  high-DPI support (e.g. iOS and Mac OS X). Use SDL_GetWindowSize() to query
     *  the client area's size in screen coordinates, and SDL_GL_GetDrawableSize(),
     *  SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to query the
     *  drawable size in pixels.
     *
     *  If the window is created with any of the SDL_WINDOW_OPENGL or
     *  SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function
     *  (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the
     *  corresponding UnloadLibrary function is called by SDL_DestroyWindow().
     *
     *  If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,
     *  SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
     *
     *  
    ote On non-Apple devices, SDL requires you to either not link to the
     *        Vulkan loader or link to a dynamic library version. This limitation
     *        may be removed in a future version of SDL.
     *
     *  sa SDL_DestroyWindow()
     *  sa SDL_GL_LoadLibrary()
     *  sa SDL_Vulkan_LoadLibrary()
     */
    extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
                                                          int x, int y, int w,
                                                          int h, Uint32 flags);
    

    SDL_DestroyWindow

    说明:销毁一个窗口
    参数:窗口指针
    返回值:无

    SDL_CreateWindowFrom

    2.5 SDL_GetWindowID

    2.6 SDL_GetWindowFromID

    SDL_GetWindowFlags

    SDL_SetWindowTitle

    SDL_GetWindowTitle

    SDL_SetWindowIcon

    SDL_SetWindowData

    SDL_RaiseWindow

    SDL_GetWindowPosition_SDL_GetWindowGrab

    SDL_GetWindowSize

    SDL_HideWindow

    SDL_MaximizeWindow

    SDL_MinimizeWindow

    SDL_RaiseWindow

    SDL_SetWindowFullscreen

    SDL_SetWindowGrab

    SDL_SetWindowSize

    SDL_UpdateWindowSurfaceRects

    SDL_CreateRenderer

    SDL_GetRenderer

    SDL_DestroyRenderer

    SDL_CreateTexture

    SDL_DestroyTexture

    。。。
    还有很多,就不一一列出来,要用时可以再去查看头文件说明。

  • 相关阅读:
    SAP 锁对象
    smartforms取消word为默认编辑器
    abap 配置 zconfig
    Ant步步为营(1)解压本地的zip包
    点击页面出现文字动画
    js简单实现累加
    github发布线上项目
    jsonp的实现
    js操作class
    js开发实用技巧
  • 原文地址:https://www.cnblogs.com/xl2432/p/11710545.html
Copyright © 2011-2022 走看看