openGL学习笔记十二: 绘制贝塞尔曲线及线的反锯齿设置

贝塞尔曲线

  贝塞尔曲线 就是一个公式,通过这个公式获取曲线上的点,从而连接成曲线。

  二次贝塞尔曲线,有起始点、终点、加上一个控制点,一个控制点控制曲线形状。
  三次贝塞尔曲线,有起始点、终点、加上两个控制点,两个控制点控制曲线形状 。

在这里插入图片描述

代码如下:


//顶点数据 包含 位置
struct  Vertex {float   x, y, z;
};Vertex  _line[360];// 绘制三次贝塞尔曲线
static void render(GLFWwindow * window) {glClearColor(0, 0, 0, 1);glClear(GL_COLOR_BUFFER_BIT);glEnable(GL_LINE_SMOOTH);  //开启线的反锯齿glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); //设置反锯齿算法glEnable(GL_BLEND);  // 启用alpha混合 (反锯齿)glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //设置混合参数glLineWidth(2); //设置线的宽度Vertex  p0  ={ 10, 10, 0 };Vertex  p1  ={ 100, 100, 0 };Vertex  p2  ={ 200, 10, 0 };Vertex  p3  ={ 300, 150, 0 };int     indx    =   0;for(float t = 0; t < 1.0f; t += 0.01f, ++indx) {// 下面顶点是通过贝塞尔曲线公式计算_line[indx].x   =   (1 - t) * (1 - t) * (1 - t) * p0.x + 3 * t * (1 - t) * (1 - t)* p1.x + 3 * t*t* (1 - t)* p2.x + t * t * t * p3.x;_line[indx].y   =   (1 - t) * (1 - t) * (1 - t) * p0.y + 3 * t * (1 - t) * (1 - t)* p1.y + 3 * t*t* (1 - t)* p2.y + t * t * t * p3.y;_line[indx].z   =   0;}glEnableClientState(GL_VERTEX_ARRAY);glVertexPointer(3, GL_FLOAT, sizeof(Vertex), _line);glDrawArrays(GL_LINE_STRIP, 0, indx - 1);glfwSwapBuffers(window);glfwPollEvents();
}

运行结果:

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部