23个版本 (8个破坏性更新)
0.9.1 | 2020年1月27日 |
---|---|
0.8.0 | 2020年1月12日 |
0.7.0 | 2019年12月15日 |
0.4.1 | 2019年11月28日 |
#1026 in 游戏开发
58 每月下载量
3.5MB
4.5K SLoC
Metropolis
它是做什么用的?
Metropolis是一个使用Rust编写的易于使用的高级图形渲染器,利用了vulkano和winit,我还有一些工作要做,我目前正在开发它,并期待社区的意见。稍后我希望能用它开发一个游戏引擎,但首先我要完成渲染器。
如何安装它?
你可以使用cargo(推荐且更容易更安全的方式)
:~$ cargo install metropolis
然后安装vulkan所需的依赖
如果你使用的是linux debian/ubuntu
:~$ apt install libvulkan1 mesa-vulkan-drivers vulkan-utils
如果你使用的是fedora
# dnf install vulkan vulkan-info
如果你使用的是arch linux
# pacman -S vulkan-radeon lib32-vulkan-radeon
如果你使用的是mac
:~$ xcode-select --install
:~$ brew install cmake
对于Windows,只需安装ninja。
用法
将以下内容添加到你的Cargo.toml中
[dependencies]
metropolis = "0.9.1"
首先使用import导入crate
extern crate metro;
use metropolis::*;
use metropolis::color::*;
//if you want some math functions use math as well
use metropolis::math::*;
然后使用创建画布的函数size(我建议将高度和宽度保存为变量,以便以后使用)
fn main(){
let height = 600;
let width = 800;
size(width,height);
接下来是设置(在这里我声明在循环函数中使用的变量)
let mut spd = 0;
let mut acc = 1;
let mut posy = 0;
background(grayscale(220));
接下来是绘图函数,这个函数会被循环调用,所以里面的内容应该相应地决定
let draw =move || {
spd+=1;
if posy+50< height{
posy+=spd;
}
fill(rgb(255,0.1.3));
ellipse(400,posy,200,100);
};
最后使用show()函数运行整个过程
show(draw);
}
如果你注意到——这个程序显示了重力对椭圆的作用
发布说明
一个补丁版本,用于修复文本模块的延迟
现在文本模块功能正常,与crates的FPS相当,文本大小在1到128之间。
以前版本发布说明
0.8.1
我终于修复了图像模块,现在可以使用它将png图像放置在页面的任何位置,大小与原始大小相同(调整大小由你决定...)
0.8.0
我稍微提高了文本的fps,添加了一个允许进行一些线性代数相关计算的结构Vector,添加了from trait、display trait和debug trait到color。
更改了图像函数:现在只接受png图像,并显示整个图像,我仍在修复它的问题。
将曲线更改为默认使用bezier(由于与catmull rom链的问题)
0.7.0
添加了使用键盘事件的可能性,请参见示例:key_event和key_event_glob。我添加了鼠标位置获取器和鼠标滚轮增量获取器。
0.6.0
现在可以使用一个公共的多线程安全画布结构,对应的示例称为canvas_struct。
0.5.1
修复了导致draw函数每次迭代结束时文本顶点未被清除的bug。
0.5.0
由于社区反馈,一些数学函数已被弃用:sin、cos、tan、abs。我添加了一个图像模块,允许您加载并显示图像(详情请参阅示例)。
0.4.1
修复了非文本使用画布的文本模块减速问题,增加了FPS不安全静态添加WIDTH/HEIGHT不安全静态。
0.4.0
1 - 添加了文本模块 - 使用text()和textSize() 2 - 在数学中添加了abs()和absf()函数。
0.3.3
1 - 将map修改为接收泛型变量 2 - 添加了quad和square函数。
0.3.2
移植到vulkano 0.16,修复了未关闭窗口的问题!
0.3.1:
有一个贝塞尔曲线,两个函数 - 一个用于顶点(4个x和y值)和一个用于链(应该有4+3*i个值,例如4,7,10,13...)。
0.3.0:
1 - 有一个名为map的映射函数 2 - 有一个名为factorial的阶乘函数 3 - 有一个名为linspace的函数,可以在两个数字之间创建等间隔的浮点数 4 - 有曲线 - 使用catmull rom链算法,有创建曲线的函数:curve、curveVertex、catmull_rom_chain。
如果您想进一步检查这个crate,请查看示例文件夹。
目前正在开发中
1)动态线宽。
2)页面元素和多画布模块
3)将静态mut转换为lazy_static(开发中)。
4)3D。
5)将HTML类型文件解析为元素。
6)来自社区反馈的其他一切!
许可证
此crate主要在MIT许可证下分发。有关详细信息,请参阅LICENSE-MIT。
依赖关系
~49MB
~1M SLoC