#graphics #high-level #gamedev #gui #cli #api #game-engine

metropolis

一个易于使用的高级图形渲染器

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 游戏开发

Download history 3/week @ 2024-03-09 125/week @ 2024-03-30 24/week @ 2024-04-06 1/week @ 2024-05-18

58 每月下载量

MIT 许可证

3.5MB
4.5K SLoC

Metropolis

crates.io License: MIT doc.rs

它是做什么用的?

Metropolis是一个使用Rust编写的易于使用的高级图形渲染器,利用了vulkanowinit,我还有一些工作要做,我目前正在开发它,并期待社区的意见。稍后我希望能用它开发一个游戏引擎,但首先我要完成渲染器。

如何安装它?

你可以使用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