可在 OpenGL 中表示的曲线

Coo*_*der 2 opengl graphics bezier cad

我是 CAD 开发的初学者,想了解一些有关 OpenGL 的知识。我的主要目标是表示圆锥曲线、摆线、外摆线、内摆线、渐开线等我可以使用一些三角函数直接表示它们,还是需要将这些曲线转换为 B 样条?实际上,我目前正在开发内核并希望开发内核,以便我无法显示上述曲线。(如果我不能以图形方式表示它们,那么在内核中支持这些曲线是没有用的!)我对 OpenGL 了解不多,所以如果我的问题真的很愚蠢,请原谅我!我试着在这里搜索,但找不到任何有用的东西。

Chr*_*ica 5

OpenGL 可以使用评估器直接渲染 Bezier 曲线和曲面,甚至可以使用 GLU API 渲染 NURBS。有关详细信息,请参阅OpenGL 编程指南。所以你可以将这些曲线和曲面转换成这种形式。

但是我强烈建议您不要使用这些功能,因为它们已被弃用(从较新的 OpenGL 版本的核心中删除)并且现在可能在软件中而不是在硬件中实现。

相反,您应该为此类曲线和曲面实现自己的评估例程,以指定的采样率评估相应的方程并生成一个简单的顶点数组(可能还有索引数组)。这样您就可以为未来做好准备,因为这些可以使用 VBO 渲染为标准线条或三角形网格(这是在现代 OpenGL 中渲染某些东西的唯一方法)。

而且您甚至可以保持 API 不可知,因为通用顶点数组也可以使用 Direct3D 或其他方式呈现。因此,这样您就不会因绘制调用而污染您的 CAD 内核。它所需要的只是一个将参数化曲线和曲面转换为顶点(可能还有索引)数组的函数,内核的客户端/用户负责使用他喜欢的任何 API 绘制这些。