c++ - 在 OpenGL 中绘制有限 segmentation 的贝塞尔曲线

标签 c++ opengl

是否可以告诉 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/

相关文章:

c++ - Visual Studio : user depended defines

c++ - 指针和字节地址一样吗?

c++ - 关于win7 64位的问题

c++ - 带有命令行参数的 Google 基准测试。编写我自己的主要功能?

opengl - LibGDX - 圆形纹理

c++ - 球体旋转 OpenGL

c - 如何在 Xcode 中为命令行工具程序创建 .app 文件

C++ Boost spirit ,对同一个 _val 进行多次求值?

c++ - DDS纹理加载

c++ - 如何在 OpenGL 中使用框选择有效地选择对象