我通过这个例子学习 OpenGL 是 Rust:https ://github.com/glium/glium/blob/84f82d3098fbc75aa22160b47bf0a2bdada01f07/examples/triangle.rs#L141
它使用名为 glutin 的窗口包装器,并像这样绘制一次三角形:
let draw = move || {
// building the uniforms
let uniforms = uniform! {
matrix: [
[1.0, 0.0, 0.0, 0.0],
[0.0, 1.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.0, 1.0f32]
]
};
// drawing a frame
let mut target = display.draw();
target.clear_color(0.0, 0.0, 0.0, 0.0);
target.draw(&vertex_buffer, &index_buffer, &program, &uniforms, &Default::default()).unwrap();
target.finish().unwrap();
};
问题是:我如何从其他线程中提取?为了调用draw
,我必须与其他线程共享它,但是像program
, index_buffer
, vertex_buffer
,这样display
的类型不是Send+Sync
。
从其他线程中提取在窗口应用程序中至关重要,所以我猜他们想到了它,应该有一种简单的方法来做到这一点,但我迷路了。