Open9
RustではじめるOpenGL メモ
以下の環境で実行するとサンプルが動かなかったので、変更箇所を残しておく
[dependencies]
sdl2 = "0.34.3"
gl = "0.14.0" # OpenGL API を使うために必要
cgmath = "0.18.0" # CG関連の数学ライブラリ(ベクトル、行列、クォータニオンなど)
c_str_macro = "1.0.2" # C言語とコンパチブルな c_str!マクロが使える
imgui = "0.6.1" # ImGui を使えるようにする
imgui-sdl2 = "0.13.0" # ImGui をSDL2フレームワークで使えるようにした
imgui-opengl-renderer = "0.10.0" # 描画処理を担当
image = "0.23.13"
これも更新されてそう
ImGui の ウインドウの生成は、Window:new()
を使う
Window::new(im_str!("Information"))
.size([300.0, 200.0], imgui::Condition::FirstUseEver)
.build(&ui, || {});
Matrix4::look_at
ではなく、Matrix4::look_at_rh
を使う
let view_matrix = Matrix4::look_at_rh(
Point3 {
x: camera_x,
y: camera_y,
z: camera_z,
},
Point3 {
x: 0.5,
y: 0.5,
z: 0.5,
},
Vector3 {
x: 0.0,
y: 0.0,
z: 1.0,
},
);
ImGui の Slider も Slider::new()
を使う
Slider::new(im_str!("Camera X"))
.range(-5.0..=5.0)
.build(&ui, &mut camera_x, );
Imageの image.raw_pixels()
が ないので、to_bytes
を使う
let data = image.to_bytes(); // ピクセルの生データを取得
Image のフォーマットは DynamicImage
を指定する
image::DynamicImage::ImageLuma8(_)
match アーム式は _ => gl::RGBA
を追加して全ての match ケースの対応を書く
サンプルコードを Fork して PullRequestを投げてみた