Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OpenGL中绘制二维不规则曲面_Opengl_Drawing_Bezier_Polygons - Fatal编程技术网

如何在OpenGL中绘制二维不规则曲面

如何在OpenGL中绘制二维不规则曲面,opengl,drawing,bezier,polygons,Opengl,Drawing,Bezier,Polygons,在过去的3个小时里,我一直在尝试如何使用贝塞尔曲线公式、glMap1f和glEvalCoord1f创建曲线形状。 (我基本上想要创造) 然而,我几乎没有取得什么成功。当我使用glBegin(GL_LINE_STRIP)时,它会跟踪轮廓,但会有一个大的+(比如x轴和y轴)。当我尝试(GL_多边形)填充时,填充可以工作,但它有一个菱形连接我正在使用的4个点。我发现了问题所在。原来我使用的sizeof(array)不正确。(具体地说,关于下面的代码,我没有使用i

在过去的3个小时里,我一直在尝试如何使用贝塞尔曲线公式、glMap1f和glEvalCoord1f创建曲线形状。 (我基本上想要创造)


然而,我几乎没有取得什么成功。当我使用glBegin(GL_LINE_STRIP)时,它会跟踪轮廓,但会有一个大的+(比如x轴和y轴)。当我尝试(GL_多边形)填充时,填充可以工作,但它有一个菱形连接我正在使用的4个点。

我发现了问题所在。原来我使用的
sizeof(array)
不正确。(具体地说,关于下面的代码,我没有使用
i
,而是天真地尝试使用
i

因此,我没有画4-5个点,而是画了192条曲线,导致了奇怪的结果。中间的钻石是因为没有连接到起点。以下代码可供将来想这样做的人参考:

错误图片:

最终产品:

void-draw多边形(GLfloat点[][4][3],int-numCurves)
//要求:GLfloat点为多边形,圆心为当前矩阵
//效果:将绘制不规则形状
{
对于(int i=0;i对于(int j=0;j)你能发布一些图片来说明你的问题吗?或者再多描述一点吗?无法理解你试图实现的目标和得到的结果。链接无效。与图像的链接已断开
void drawIrregularPolygon(GLfloat points[][4][3], int numCurves)
// REQUIRES: GLfloat points to be a polygon and center of circle to be current matrix
// EFFECTS:  An irregular shape would be drawn
{
    for (int i = 0; i < numCurves; i++)
    {
        glMap1f( GL_MAP1_VERTEX_3, 0.0f, 1.0f, 3, 4, &points[i][0][0] );
        glBegin(GL_POLYGON);  //replace GL_POLYGON with GL_LINE_STRIP if you need outline
        for (int j = 0; j <= TOTAL_SEGMENTS; j++)
            glEvalCoord1f((GLfloat) j / TOTAL_SEGMENTS);
        glVertex2f(points[0][0][0], points[0][0][1]);
        glEnd();
    }
}