5 个不稳定版本
0.3.0 | 2023年11月14日 |
---|---|
0.2.2 | 2023年1月3日 |
0.2.1 | 2022年8月29日 |
0.2.0 | 2021年5月7日 |
0.1.0 | 2017年9月11日 |
#202 in 图形 API
82,364 每月下载量
用于 13 个包 (直接使用 3 个)
15KB
365 代码行
为 Rust 提供安全的 libgbm
绑定
通用缓冲区管理器
此模块提供了一种抽象,调用者可以使用它从平台的底层内存管理系统请求缓冲区。
这允许创建可移植的代码,同时仍然允许访问底层的内存管理器。
此库最好与 drm-rs
结合使用,通过 drm-support
功能提供。
使用方法
添加到您的 Cargo.toml 中
gbm = "0.15.0"
示例
extern crate drm;
extern crate gbm;
use drm::control::{self, crtc, framebuffer};
use gbm::{BufferObjectFlags, Device, Format};
// ... init your drm device ...
let drm = init_drm_device();
// init a GBM device
let gbm = Device::new(drm).unwrap();
// create a buffer
let mut bo = gbm
.create_buffer_object::<()>(
1280,
720,
Format::Argb8888,
BufferObjectFlags::SCANOUT | BufferObjectFlags::WRITE,
)
.unwrap();
// write something to it (usually use import or egl rendering instead)
let buffer = {
let mut buffer = Vec::new();
for i in 0..1280 {
for _ in 0..720 {
buffer.push(if i % 2 == 0 { 0 } else { 255 });
}
}
buffer
};
bo.write(&buffer).unwrap();
// create a framebuffer from our buffer
let fb = gbm.add_framebuffer(&bo, 32, 32).unwrap();
// display it (and get a crtc, mode and connector before)
gbm.set_crtc(crtc_handle, Some(fb), (0, 0), &[con], Some(mode))
.unwrap();
依赖项
~175KB