【发布时间】:2015-04-06 16:55:48
【问题描述】:
我正在尝试绘制具有一定厚度的三次贝塞尔路径,但曲线看起来像一系列断开的段(在我的例子中是 3 个)。这是截图(蓝色圆圈是曲线的控制点)。
我注意到 cocos2d-x 测试中的“绘制原语”中出现了相同的效果。无论如何,我很确定应该有一个解决方法,但我自己无法找到它。 此外,这条线受到锯齿效果的影响,我不确定如何应用 alpha 阴影来避免它。
这是我使用的代码:
glLineWidth(24.0f);
Vec2 cp1 = Vec2(200, 200);
Vec2 cp2 = Vec2(1300, 150);
Vec2 cp3 = Vec2(170, 1200);
Vec2 cp4 = Vec2(1400, 1000);
//Draw control points
DrawPrimitives::setDrawColor4B(0, 0, 255, 255);
DrawPrimitives::drawSolidCircle(cp1, 50, 360, 120, 1, 1);
DrawPrimitives::drawSolidCircle(cp2, 50, 360, 120, 1, 1);
DrawPrimitives::drawSolidCircle(cp3, 50, 360, 120, 1, 1);
DrawPrimitives::drawSolidCircle(cp4, 50, 360, 120, 1, 1);
//Draw cubic red bezier curve
DrawPrimitives::setDrawColor4B(255, 0, 0, 255);
DrawPrimitives::drawCubicBezier(cp1, cp2, cp3, cp4, 50);
【问题讨论】:
-
如果在您指定“正常”线宽(如 1.0f)时效果没有在视觉上出现,那么您看到的是 OpenGL 的限制。您看到的“间隙”是用于绘制贝塞尔曲线的三条线的上限。由于 OpenGL 不允许您指定行上限,因此您可能必须自己实现这些...