Tôi đang cố gắng vẽ một đường bezier khối với độ dày nhất định, nhưng đường cong xuất hiện giống như một chuỗi các đoạn bị ngắt kết nối (3 trong trường hợp của tôi). Đây là một ảnh chụp màn hình (các vòng tròn màu xanh lam là các điểm điều khiển của đường cong).Cocos2d-x - Lỗi vẽ đường cong bezier khối
tôi nhận thấy rằng tác dụng tương tự xảy ra trong 'vẽ nguyên thủy' trong các bài kiểm tra cocos2d-x. Dù sao thì tôi cũng khá chắc là có một cách giải quyết nhưng tôi không thể tự mình tìm được nó. Ngoài ra dòng bị ảnh hưởng bởi hiệu ứng răng cưa và tôi không chắc chắn cách áp dụng bóng alpha để tránh nó.
Đây là mã tôi đã sử dụng:
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);
Nếu ảnh hưởng không trực quan xảy ra khi bạn đang xác định một "bình thường" dòng byte (như 1.0f), sau đó những gì bạn đang nhìn thấy là một hạn chế của OpenGL . 'khoảng trống' bạn đang thấy là các mũ của ba dòng được sử dụng để vẽ đường cong bezier. Vì OpenGL không cho phép bạn chỉ định giới hạn dòng, bạn có thể sẽ phải tự thực hiện các dòng đó ... –