我已经试过了3个小时来弄清楚如何使用Bezier曲线公式,glMap1f和glEvalCoord1f来创建曲线形状。 (我基本上想创建the right of kirby)。如何在OpenGL中绘制2D不规则曲线形状
但是,我已经取得了一些成功。当我使用glBegin(GL_LINE_STRIP)时,它跟踪轮廓,但有一个很大的+(像你的x和y轴)。当我尝试(GL_POLYGON)时,填充工作,但它有一个钻石连接我使用的4点。
我已经试过了3个小时来弄清楚如何使用Bezier曲线公式,glMap1f和glEvalCoord1f来创建曲线形状。 (我基本上想创建the right of kirby)。如何在OpenGL中绘制2D不规则曲线形状
但是,我已经取得了一些成功。当我使用glBegin(GL_LINE_STRIP)时,它跟踪轮廓,但有一个很大的+(像你的x和y轴)。当我尝试(GL_POLYGON)时,填充工作,但它有一个钻石连接我使用的4点。
我发现了什么问题。原来我错误地使用了sizeof(array)
。 (比较特别,参照下面的代码,而不是使用i < numCurves
,我天真试图做i < sizeof(points)
)
因此,代替绘图4-5分,我结束了绘制曲线192,导致奇怪的结果。中间的钻石是由于没有连接回到起点。对于谁愿意做这个未来的人参考,下面的代码:
错误的图片:
Erroneous Picture http://img535.imageshack.us/img535/8207/failfd.png
最终产品:
Final Product http://img685.imageshack.us/img685/7641/finalsa.png
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();
}
}
你可以发表图片显示您的问题或描述再来一点 ?无法弄清楚你想达到什么以及你得到什么。链接不起作用。 – neodelphi
与图像链接中断 –
@VJo:图像修复。 – genpfault