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