Sto provando a disegnare un tracciato di Bezier cubico con un certo spessore, ma la curva appare come una sequenza di segmenti sconnessi (3 nel mio caso). Questo è uno screenshot (i cerchi blu sono i punti di controllo della curva).Cocos2d-x - Errore durante il disegno delle curve cubiche di bezier
ho notato che lo stesso effetto si verifica negli disegnare primitivi 'nei test di cocos2d-x. Ad ogni modo sono abbastanza sicuro che ci dovrebbe essere una soluzione, ma non sono in grado di trovarlo da solo. Inoltre la linea è influenzata dall'effetto di aliasing e non sono sicuro di come applicare un'ombra alfa per evitarlo.
Questo è il codice che ho usato:
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);
Se l'effetto non si verifica visivamente quando si specifica una larghezza della linea "normale" (come 1.0f), allora ciò che state vedendo è una limitazione di OpenGL . gli "spazi vuoti" che stai vedendo sono i tappi delle tre linee utilizzate per disegnare la curva di Bezier. Poiché OpenGL non ti consente di specificare i limiti di riga, probabilmente dovrai implementarli tu stesso ... –