跳过正文

SDL2学习笔记 - Hello SDL2

·169 字·1 分钟· loading · ·
C SDL2
邱 璇洛
作者
邱 璇洛
say wow
sdl2 - 这篇文章属于一个选集。
§ 1: 本文

起步
#

环境:MacOS 本文开发 SDL 使用的语言是 C 语言(别问,问就是不喜欢 C++) 本文更趋向是技术记录,不是新手教程,不过我觉得学过一些 C 语言的看起来没啥问题

下载 SDL,在 MacOS 是很简单的,因为我懒得用 Xcode,直接用 brew 下载,VScode 开发,美滋滋。 brew install sdl2 下载完之后还需要配置一下 CMake,在 MacOS 里 CMake 直接引用是没办法找到 SDL 库,还需要连接下头文件位置。 使用 brew info 查找库位置 > brew info sdl2

然后配置一下 CMake 就可以直接引用了

cmake_minimum_required(VERSION 3.23.2)
project(HelloSDL2 C)

set(CMAKE_C_STANDARD 11)

set(MY_LIBRARY_DIR /usr/local/Cellar)

set(SDL_DIR ${MY_LIBRARY_DIR}/sdl2/2.26.0)
include_directories(${SDL_DIR}/include/SDL2)
link_directories(${SDL_DIR}/lib/)

link_libraries(SDL2)

add_executable(HelloSDL2 main.c)

好啦,之后就可以开始真正写代码啦!

你好,SDL
#

创建一个窗口,在 SDL 里十分简单 首先创建一个窗口

#include <SDL.h>

int main() {
    if (SDL_Init(SDL_INIT_VIDEO)) {
        SDL_Log("Can not init video, %s", SDL_GetError());
        return 1;
    }
    ...
    return 0;
}

if 是为了防止出问题了你还不知道咋回事 然后就是 SDL 的窗口配置

...
    SDL_Window * win = SDL_CreateWindow(
    	//title
        "HelloWorld",
        SDL_WINDOWPOS_CENTERED,
        SDL_WINDOWPOS_CENTERED,
        //窗口大小
        400,300,
        SDL_WINDOW_SHOWN
    );
....

最后别忘了释放窗口

...
SDL_DestroyWindow(win);
...

完整代码

#include <SDL.h>

int main() {
    if (SDL_Init(SDL_INIT_VIDEO)) {
        SDL_Log("Can not init video, %s", SDL_GetError());
        return 1;
    }

    SDL_Window * win = SDL_CreateWindow(
        "HelloWorld",
        SDL_WINDOWPOS_CENTERED,
        SDL_WINDOWPOS_CENTERED,
        400,300,
        SDL_WINDOW_SHOWN
    );

    if (win==NULL) {
        SDL_Log("Can not create window, %s", SDL_GetError());
        return 1;
    }

    SDL_Delay(3000);

    SDL_DestroyWindow(win);
    return 0;
}

没问题的话,你会看到一个 400*300 的黑框框,在 3 秒后自动关闭,在 mac 上还可能啥也没出现,但是你会发现程序坞里出现了一个新程序,也是成功了。

参考资料
#

SDL2 C 语言跨平台游戏开发基础 陈云老师 SDL2/FrontPage

Reply by Email
sdl2 - 这篇文章属于一个选集。
§ 1: 本文