opengl - 可在 OpenGL 中表示的曲线

标签 opengl graphics bezier cad

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

最佳答案

OpenGL 可以使用赋值器直接渲染贝塞尔曲线和曲面,甚至可以使用 GLU API 渲染 NURBS。查看OpenGL Programming Guide了解更多信息。因此,您可以将这些曲线和曲面转换成这种形式。

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

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

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

关于opengl - 可在 OpenGL 中表示的曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7953189/

相关文章:

c - 不太好的OpenGL学习资料

c++ - OpenGL 'deprecated' 功能可能不受支持吗?

math - 使用简短的贝塞尔曲线列表来近似点列表

javascript - Html5 Canvas Bezier 上的虚线曲线

OpenGL 4.0 GPU 绘图功能?

c - 我是否正确创建了观察矩阵和透视矩阵?

css - 你能在纯CSS中对图像进行keystone吗?

二维轨迹的路径简化和平滑算法

c++ - OpenGL/GLUT - 更新多个窗口

c++ - 旋转二维多边形算法