1 个不稳定版本

0.1.0 2019 年 1 月 7 日

#456 in 图形 API

BSD-2-Clause

1.5MB
8K SLoC

Rust 7K SLoC // 0.1% comments C 614 SLoC // 0.0% comments Python 511 SLoC // 0.0% comments Shell 27 SLoC // 0.3% comments

agg

A Rust 版本的 Anti-Grain Geometry

一个高保真和高品质的 2D 图形渲染引擎

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
agg = "0.1.0"

示例

Little Black Triangle

use agg::PixelData;
use agg::Render;

// Create a blank image 10x10 pixels
let pix = agg::Pixfmt::<agg::Rgb8>::new(100,100);
let mut ren_base = agg::RenderingBase::new(pix);
ren_base.clear(agg::Rgba8::white());

// Draw a polygon from (10,10) - (50,90) - (90,10)
let mut ras = agg::RasterizerScanline::new();
ras.move_to_d(10.0, 10.0);
ras.line_to_d(50.0, 90.0);
ras.line_to_d(90.0, 10.0);

// Render the line to the image
let mut ren = agg::RenderingScanlineAASolid::with_base(&mut ren_base);
ren.color(&agg::Rgba8::black());
agg::render_scanlines(&mut ras, &mut ren);

// Save the image to a file
agg::ppm::write_ppm(&ren_base.pixeldata(), 100,100,
                    "little_black_triangle.ppm").unwrap();

功能

  • 抗锯齿绘制

  • 亚像素精度

  • 任意多边形的渲染

  • 文本/字体渲染(通过 Freetype

  • 性能?(待确定)

复杂性

引用原始 C++ 库

Anti-Grain Geometry 不是一个完整的图形库,并且使用起来并不容易。我考虑 AGG 为一个 "创建其他工具的工具"。这意味着没有 "图形对象" 或类似的东西,相反,AGG 由一系列松散耦合的算法组成,可以一起或单独使用。所有这些算法都具有良好定义的接口和绝对最小数量的隐式或显式依赖。

许可证

此版本从 agg-2.4(BSD 3-Clause)移植而来,并按照 BSD 2-Clause 许可证发布。

依赖关系

~8.5MB
~165K SLoC