#polygon #terrain #gfx #buffer #gis #rendering #draping

gfx_draping

使用 gfx 在地形上绘制多边形

4 个版本 (2 个破坏性更新)

使用旧的 Rust 2015

0.3.0 2018年3月5日
0.2.1 2017年12月3日
0.2.0 2017年12月3日
0.1.0 2017年9月14日

#828图形API

每月31次下载
用于 gaia

MIT 许可证

510KB
373 代码行

gfx_draping

A screenshot of this library in action

此存储库作用的示例。在正弦波形地形上渲染了一个多边形数组(不是纹理!)。

注意多边形如何随地形起伏,并且可以被路边的隆起/山脉部分遮挡。

Another screenshot

另一个示例,展示了南非共和国。注意该国大陆部分(这是南非与莱索托王国(一个独立国家)接壤的地方)的空洞,以及右下角的马里昂群岛。

此库旨在与 GIS 数据易于使用,但您也可以轻松手动构建多边形。

这是一个帮助您在地形上绘制多边形的库。它使用基于深度和模板缓冲区的屏幕空间算法。性能仅受您绘制的多边形复杂度的影响,不受绘制地形的影响。

此库是 Rust 实现了由 Schneider & Klein (2007) 描述的算法,标题为“在虚拟景观上高效且精确地渲染矢量数据”。

第一张截图来自这个简约演示

# You'll want to zoom out to see anything. Do that by holding down CTRL and
# dragging down with your mouse. Then pan around with shift+drag.
cargo run --example demo

第二张截图来自 south_africa 演示,展示了如何将此库与 GIS 数据结合使用

# See instructions above on how to use the camera. Be sure to use --release,
# otherwise you won't get a smooth, 60 fps experience.
cargo run --release --example south_africa

我能使用这个库吗?

您可以,只要以下事项是真的

  • 您正在使用 gfx 进行图形。
    • 目前,仅支持 OpenGL。但这并不是一个深层次的原因;只是相关的着色器还没有编写。如果您想使用另一个后端,PR 将被欢迎。😄
  • 您使用世界空间中的 Z 轴作为“向上” — 也就是说,山脉位于正 Z 方向,山谷位于负 Z 方向。

我如何使用这个库?

请参阅 顶层文档 了解如何使用此存储库的高级指导。

待办事项

如果您对以下任何问题感兴趣,请打开一个问题或与我联系,我可以为您提供帮助。或者,如果您勇敢的话,请打开一个 PR!😄

  • 添加对非 OpenGL 后端的支持。
  • 实现Schneider(2007)中描述的z-pass算法。此算法可能稍微快一些,但只能在多边形的边界框不与视图视锥体近平面相交时使用。目前,仅实现了适用于所有情况的z-fail方法。

依赖项

约8MB
约153K SLoC