【问题标题】:Is it possible to create unions of primitives in OpenGL?是否可以在 OpenGL 中创建基元联合?
【发布时间】:2014-03-17 19:31:27
【问题描述】:

我在 Google 上找不到任何东西,但想知道是否有一种方法可以在 OpenGL 中创建基元的联合?类似于 POV-Ray 的东西会很酷。

【问题讨论】:

  • 基元联合是指构造立体几何吗?在 OpenGL 中,唯一的基元是点、线和三角形,所以如果你想要对象的联合,那么你需要自己定义计算,然后对结果进行三角测量以绘制它。
  • 哦,谢谢伙计。我一定在 POV-Ray 上花费了太多时间,因为我将圆柱体视为基元,呵呵。

标签: opengl


【解决方案1】:

OpenCSG 听起来它可能会做你想做的事:

OpenCSG 是一个使用 OpenGL 进行基于图像的 CSG 渲染的库。 OpenCSG 是用 C++ 编写的,支持大多数使用 Microsoft Windows 或 Linux 操作系统的现代图形硬件。

CSG 是 Constructive Solid Geometry 的缩写,表示一种使用更简单的形状对复杂 3D 形状进行建模的方法。即,两个形状可以通过合并、相交或减去另一个形状来组合。不是这种 CSG 操作的结果的最基本的形状称为原语。基元必须是实心的,即它们必须具有明确定义的内部和外部。通过构造,一个 CSG 形状也是实体的。

基于图像的 CSG 渲染(也称为 z-buffer CSG 渲染)是一个术语,表示无需显式计算 CSG 形状的几何边界即可渲染 CSG 形状的算法。此类算法使用图形硬件的帧缓冲区设置(例如深度和模板缓冲区)来组成 CSG 形状。 OpenCSG 实现了多种这些算法,即 Goldfeather 算法和 SCS 算法,它们都有几个变体。

PovRay 等光线追踪器很久以前就使用 CSG 进行形状建模。

【讨论】:

  • 谢谢,这听起来就像我应该一直使用的东西。
猜你喜欢
  • 1970-01-01
  • 2022-12-02
  • 2021-07-10
  • 2012-03-22
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多