是否可以告诉 OpenGL 绘制 10 segmentation 的 4 度(5 个控制点)贝塞尔曲线?
我正在尝试这样做:
point ctrlpts[] = {..., ..., ..., ...};
glMap1f(GL_MAP1_VERTEX_3, 0, 1, 3, 5, ctrlpts);
glBegin(GL_LINE_STRIP);
for (i = 0; i <= 30; i++)
glEvalCoord1f((GLfloat) i/30.0);
glEnd();
但这只是很好地绘制了曲线。我在想,我希望贝塞尔曲线内的算法只绘制 10 个 segmentation ,然后停止。这条线应该看起来有点棱角。
最佳答案
好吧,从 0 循环到 10 然后除以 10。
OpenGL 只知道平面图元。曲线超出了它的掌握范围。求值器所做的是,它们允许您告诉 OpenGL 插值函数的系数,然后您告诉 OpenGL 对给定参数的函数进行采样。
从技术上讲,OpenGL 求值器是过时的技术。它们既没有硬件加速,也没有使驱动程序开发更简单。它们已从 OpenGL-3 核心中删除,原因很简单,您可以使用顶点着色器实现类似评估器的功能,然后由 GPU 加速,并且您可以在它们上放置曲面 segmentation 器以在 GPU 上生成采样点好吧。
关于c++ - 在 OpenGL 中绘制有限 segmentation 的贝塞尔曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193185/