【发布时间】:2010-05-30 14:45:04
【问题描述】:
圆是基本的几何实体之一。然而,OpenGL 中没有为此定义原语,例如线条或多边形。为什么这样?一直为此包含自定义标题有点烦人!
有什么具体原因可以省略吗?
【问题讨论】:
-
说这取决于分辨率
-
这样我们可以在技术面试中要求人们写一个圆圈函数。
标签: opengl
圆是基本的几何实体之一。然而,OpenGL 中没有为此定义原语,例如线条或多边形。为什么这样?一直为此包含自定义标题有点烦人!
有什么具体原因可以省略吗?
【问题讨论】:
标签: opengl
虽然圆形可能是基本形状,但在光栅化方面,它们不像点、线或三角形那样基本。第一款具有 3D 加速功能的显卡被设计成可以很好地完成一件事,即光栅化三角形(以及线条和点,因为它们添加起来很简单)。添加任何更复杂的形状会使卡片变得更加昂贵,而只添加很少的功能。
但不包括圆形/椭圆还有另一个原因。他们不连接。您无法使用它们构建 3D 模型,也无法在不添加间隙或重叠部分的情况下将三角形连接到它们。因此,要使圆形有用,您还需要其他形状,如曲线和其他更高级的曲面(例如 NURBS)。单独的圆只能用作“大点”,也可以使用四边形和圆形纹理或三角形来完成。
如果您对圆圈使用“自定义标题”,您应该知道那些可能会创建一个三角形模型来形成您的“圆圈”。
【讨论】:
因为从历史上看,显卡都会渲染点、线和三角形。
您使用足够短的线来计算曲线,这样显卡就不必这样做了。
【讨论】:
因为图形卡在 3 维点、线和三角形上运行。圆需要曲线或样条曲线。它不能用“正常”的 3D 图元完美表示,只能近似为 N 边形(因此在一定距离处它看起来像一个圆)。如果您想要一个圆圈,请自己编写例程(这并不难)。要么将其绘制为 N 边形,要么制作一个正方形(2 个三角形)并使用片段着色器从中切出一个圆形(您可以通过这种方式获得一个完美的圆形)。
【讨论】:
您始终可以使用gluSphere(如果您正在寻找一个三维形状)。
如果您想绘制一个二维圆,您会遇到自定义方法。我会选择三角扇。
原语被称为原语是有原因的 :)
【讨论】: