Ich versuche, einen kubischen Bezier Pfad mit einer bestimmten Dicke zu zeichnen, aber die Kurve erscheint wie eine Sequenz von getrennten Segmenten (3 in meinem Fall). Dies ist ein Screenshot (die blauen Kreise sind die Kontrollpunkte der Kurve).Cocos2d-x - Fehler beim Zeichnen von kubischen Bezier-Kurven
bemerkte ich, dass der gleiche Effekt tritt in dem 'ziehen Primitiven' in den cocos2d-x-Tests. Ich bin mir ziemlich sicher, dass es einen Workaround geben sollte, aber ich bin nicht in der Lage, es selbst zu finden. Außerdem ist die Linie vom Aliasing-Effekt betroffen und ich bin mir nicht sicher, wie ich einen Alpha-Schatten anwenden soll, um es zu vermeiden.
Dies ist der Code, den ich verwenden:
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);
Wenn der Effekt visuell nicht auftritt, wenn Sie eine „normale“ Linienbreite sind spezifiziert (wie 1.0f), dann ist eine Beschränkung von OpenGL, was Sie sehen . Die "Lücken", die Sie sehen, sind die Kappen der drei Linien, die zum Zeichnen der Bezier-Kurve verwendet werden. Da OpenGL es Ihnen nicht erlaubt, Zeilenkappen anzugeben, müssen Sie diese wahrscheinlich selbst implementieren ... –