Metropolis is an easy to use high level graphics renderer written in rust, utilizing vulkano and winit, I still have some work to do on it and I am currently still developing it and would love community input. Later I hope to develop a game engine using it but first I'll finish the renderer.
console
:~$ cargo install metropolis
console
:~$ apt install libvulkan1 mesa-vulkan-drivers vulkan-utils
```console
```
```console
```
console
:~$ xcode-select --install
:~$ brew install cmake
Add the following to your Cargo.toml:
rust
[dependencies]
metropolis = "0.7.0"
First use import the crate:
rust
extern crate metro;
use metropolis::*;
use metropolis::color::*;
//if you want some math functions use math as well
use metropolis::math::*;
Then you use the funcion size that creates a canvas(I wwould suggest to save height and width as variables so you can use them later
rust
fn main(){
let height = 600;
let width = 800;
size(width,height);
Next comes the setup(here I declare the varibles I will be using insode the looped function):
rust
let mut spd = 0;
let mut acc = 1;
let mut posy = 0;
background(grayscale(220));
Next comes the draw function, this function gets looped over so what's in it should be decided accordingly
rust
let draw =move || {
spd+=1;
if posy+50< height{
posy+=spd;
}
fill(rgb(255,0.1.3));
ellipse(400,posy,200,100);
};
Finally use the show() function to run the whole thing:
rust
show(draw);
}
If you noticed - this program displays gravity working on an ellipse
added the possiblity to use keyboard events see the examples:keyevent and keyevent_glob. I added mouse position getters and mouse scroll delta getters.
you can now use a public mutithreading safe canvas struct, the matching example is called canvas_struct
fixed a bug that caused the text vertecies to not be cleared at he end of each iteration of the draw function
some of the math functions were deprecated due to community feedback:sin,cos,tan,abs I added an image module that allows you to load an image and display it(see the example for more details)
fixed the text module slowdown for the non-text using canvases added FPS unsafe static added WIDTH/HEIGHT unsafe statics
1 - added a text module - uses text() and textSize() 2 - added abs() and absf() functions to math
1 - changed map to recieve generic variable 2 - added quad and square functions
ported to vulkano 0.16, fixed the problem with the unclosing window!
there is a bezier curve, 2 function - one for vertex(4 x's and y's) and one for a chain(should have amout of values of 4+3*i such as 4,7,10,13...)
1 - there is a mapping function called map 2 - there is a factorial function called factorial 3 - there is a function called linspace that create evenly spaced floats between two numbers 4 - there are curves - using the catmull rom chain algorithm there is are functions to create a curves: curve, curveVertex, catmullromchain
1)dynamic line width. 2)improve image module 3)making the static mut into a lazy_static(in development). 4)vector operations(scalar mult, vec dot, vec to vec add...). 5)adding unit tests. 6)3D. 7)anithyng else from community feedback!
This crate is primarily distributed under the terms of the MIT license See LICENSE-MIT for details.