1 个不稳定版本
0.1.0 | 2024年1月15日 |
---|
#2095 在 开发工具
13KB
228 代码行
让 Rust 和 OpenGL 恋爱
Rust 和 OpenGL 之间的数据传递容易出错,错误难以调试。
此 crate 提供了基于 glam crate 的 GLSL 构造的编译时转换。
[dependencies]
glrs = "0.1"
仅在 rustc 1.75 上进行了测试。
路线图
- 布局感知导入
- 根据 GLSL 规范定义的布局模式添加填充字节
- 结构体
- 基本结构体导入
- 嵌套结构体导入?
- 统一体
- 单文件统一体导入
- 完整着色器链统一体检查和导入
- 定义
- 单文件定义导入(从多个文件导入时可能存在冲突)
- 接口块
导入结构体
着色器/工具.glsl
struct Player {
vec3 pos;
vec3 speed;
};
src/main.rs
#[glrs::import(path = "shaders/utils.glsl", name = "Player")]
#[derive(Debug)]
struct GlPlayer;
fn main() {
dbg!(GlPlayer {
pos: glam::vec3(0., 0., 0.),
speed: glam::vec3(0., 0., 0.),
});
}
依赖
~5MB
~135K SLoC