2

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

4

2 回答 2

5

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

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

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

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

于 2011-10-31T12:18:51.297 回答
3

如果我没记错的话,OpenGL 只适用于平面多边形。尽管如此,您可以检查 GLUT 库是否有任何方法来绘制上述图形,或者在 google 上查找这些图形的 .obj,然后缩放、旋转并将它们转换到所需的位置。

于 2011-10-31T11:57:18.013 回答