0x01. 使用 SDL2 建立一個視窗

limit007發表於2019-08-13

之前已經把程式碼上傳到 git 託管平臺, 現在開始編碼工作吧.

從入口開始

直接在 main 函式寫東西, 寫好再組織一下程式碼.

use self::time::Duration;
use sdl2::pixels::Color;
use std::{thread, time};

fn main() {
    let sdl2_context = sdl2::init().unwrap();
    let video = sdl2_context.video().unwrap();
    let window = video
        .window("Arcade Shooter", 800, 600)
        .position_centered()
        .opengl()
        .build()
        .unwrap();
    let mut canvas = window.renderer().accelerated().build().unwrap();
    canvas.set_draw_color(Color::RGB(0, 0, 0));
    canvas.clear();
    canvas.present();
    thread::sleep(Duration::from_millis(10000));
}

現在是建立了一個視窗, 還讓視窗顯示了 10 秒.

程式碼解讀

因為現在用的 Rust 版本是 2018 edition, 如果是舊版本需要使用 extern crate sdl2 引入 sdl2 模組, 新版真是提高開發體驗, 直接 use sdl2 就能使用 sdl2.
主函式進去之後, 通過 sdl2init 函式得到初始化得到一個 Result<Sdl, String>, 通常情況下, 直接 unwrap 拿到 Sdl 例項就可以了, 也可以使用 expect 傳入一個錯誤情況的提示字串切片, 這是我們後面要使用 sdl 的開端. 後面的都很好理解, 通過 Sdl 例項的 video 函式來初始化 video subsystem, 再用這個例項來呼叫 window 函式建立視窗構建器, 配置視窗居中, 配置 OpenGL 支援, 最後構建出一個視窗. 其實這段程式碼就是一個 hello world 性質的東西.


這一節應該是很簡單的, 就是翻文件性質的工作.

相關文章