在OpenGL中绘制具有有限细分的贝塞尔曲线

时间:2011-11-19 09:45:38

标签: c++ opengl

是否有可能告诉OpenGL绘制4度(5个控制点)bezier曲线和10个细分?

我正在尝试这个:

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个细分然后停止。这条线应该看起来有点小。

1 个答案:

答案 0 :(得分:4)

好吧,只需从0循环到10并除以10。

OpenGL只知道平面基元。曲线超出了它的掌握范围。评估人员所做的是,它们允许您告诉OpenGL系数的插值函数,然后告诉OpenGL对给定参数的函数进行采样。

技术上,OpenGL评估员是过时的技术。它们也没有硬件加速,也没有使驱动程序开发更简单。它们被从OpenGL-3核心中移除,原因很简单,您可以使用顶点着色器实现评估器之类的功能,然后由GPU加速,您可以在其上放置tesselators以在GPU上生成采样点好。