Cxxdroid 中文文档 下载 App

SDL2 在 Cxxdroid 里的配置 —— 移动端直接画图形

SDL2 是什么

Simple Directmedia Layer(SDL)是一个跨平台的底层多媒体开发库——提供:

几乎所有独立游戏开发者都用 SDL2(或其高层封装如 Raylib)做图形渲染。

Cxxdroid 上能做什么

SDL2 在 Cxxdroid 预构建版本里:

好消息是——SDL2 的渲染器在 Android 上会自动走 GPU 硬件加速,不需要你手动配置 EGL 或 GLES。

安装 SDL2

包管理器搜索「SDL2」或「sdl2」,安装即可。

CMake 自动发现

安装完 SDL2 后,CMake 项目里:

find_package(SDL2 REQUIRED)
add_executable(mygame main.cpp)
target_link_libraries(mygame PRIVATE SDL2::SDL2)

Cxxdroid 的预构建 SDL2 通常已经注册到系统,find_package 能直接找到。

如果报找不到 SDL2,可以手动指定路径:set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") 加一个自定义 FindSDL2.cmake。

运行方向:竖屏还是横屏

Android 上的 SDL2 程序有个特殊设置——屏幕方向。

// 在创建窗口前设置
SDL_SetHint(SDL_HINT_ORIENTATIONS, "Portrait");  // 竖屏
SDL_SetHint(SDL_HINT_ORIENTATIONS, "Landscape"); // 横屏
SDL_SetHint(SDL_HINT_ORIENTATIONS, "All");       // 全部方向

在 Cxxdroid 上也可以在项目设置里配置默认运行方向。如果你做的是 2D 游戏,横屏通常更舒服——操作区域更大。

SDL2 示例程序运行在横屏模式

一个最小可运行的 SDL2 程序

#include <SDL2/SDL.h>

int main() {
    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window *win = SDL_CreateWindow("Hello SDL2",
        SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
        320, 480, SDL_WINDOW_SHOWN);

    SDL_Renderer *ren = SDL_CreateRenderer(win, -1,
        SDL_RENDERER_ACCELERATED);

    // 画个红色方块
    SDL_SetRenderDrawColor(ren, 255, 0, 0, 255);
    SDL_Rect rect = {50, 80, 100, 100};
    SDL_RenderFillRect(ren, &rect);

    SDL_RenderPresent(ren);

    SDL_Delay(2000);  // 等 2 秒让你看一眼

    SDL_DestroyRenderer(ren);
    SDL_DestroyWindow(win);
    SDL_Quit();
    return 0;
}

编译运行,如果屏幕上出现一个红色方块,说明 SDL2 工作正常。