我在C ++中有一个catmull rom样条循环。我能够制作样条曲线,并且具有曲线点,但是当我尝试使用GL_TRIANGLE_FAN填充边框区域时,我得到了太多的直线。我的问题是,如何有效地用颜色填充样条环区域?
这就是我绘制样条线的方式:
glBindVertexArray(vao);
unsigned int vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(lines) * sizeof(float), lines, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_LINE_STRIP, 0, vecLinePoints.size());
编辑: 这就是我尝试填充凹面的方式:
glClear(GL_DEPTH_BUFFER_BIT);
glDisable(GL_STENCIL_TEST);
glStencilMask(0xFF);
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
glStencilOp(GL_INVERT, GL_INVERT, GL_INVERT);
glClear(GL_STENCIL_BUFFER_BIT);
glBindVertexArray(vao);
unsigned int vbo;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(polyPoints) * sizeof(float), polyPoints, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLE_FAN, 0, vecPoints.size());
glStencilMask(0x00);
glStencilFunc(GL_NOTEQUAL, 0, 0xFF);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glDisable(GL_STENCIL_TEST);