它可能與這個question, 重複,但我不知道如何在我的應用中應用這種方法,以及我應該在cocos2d-x中使用哪種方法來繪製Bezier曲線。我的應用程序應該允許用戶在觸摸畫布時繪製線條和曲線。我怎樣才能做到這一點?使用cocos2d-x繪製光滑的貝塞爾曲線
2
A
回答
1
CCDrawPrimitives.cpp文件中。
您可以使用此方法。
ccDrawCubicBezier
ccDrawQuadBezier
-MyClass::draw() {
glLineWidth(4.0f);
ccPointSize(4);
//Draw a blue quadratic bezier curve
ccDrawColor4B(0, 0, 255, 255);
ccDrawQuadBezier(ccp(90,0), ccp(200, 70), ccp(350,0), 12);
//Draw cubic red bezier curve
ccDrawColor4B(255, 0, 0, 255);
ccDrawCubicBezier(ccp(100,100), ccp(300,150), ccp(250,50), ccp(350,100), 12);
//Restore original values
glLineWidth(1);
ccDrawColor4B(255,255,255,255);
ccPointSize(1);
}
每次您移動觸摸位置,ccTouchesMoved方法被調用,你可能知道的。
您可以使用方法和成員變量來控制曲線形狀。
4
從Cocos2dx v3.3開始,您可以使用DrawNode繪製貝塞爾曲線。檢查DrawPrimitivesTest.cpp,它非常易於使用。 這只是從上述文件中提取的示例腳本。您可以在任何地方的場景使用它:
auto draw = DrawNode::create();
addChild(draw, 10);
auto s = Director::getInstance()->getWinSize();
draw->drawQuadBezier(Vec2(0, s.height), Vec2(s.width/2, s.height/2), Vec2(s.width, s.height), 50, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
draw->drawCubicBezier(VisibleRect::center(), Vec2(VisibleRect::center().x+30,VisibleRect::center().y+50), Vec2(VisibleRect::center().x+60,VisibleRect::center().y-50),VisibleRect::right(),100, Color4F(CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), 0.5));
相關問題
- 1. 平滑手繪貝塞爾曲線
- 2. 平滑貝塞爾曲線
- 3. 用Fabric.js繪製貝塞爾曲線
- 4. 與貝塞爾曲線繪製的UIView
- 5. SpriteKit - 逐漸繪製貝塞爾曲線
- 6. 繪製橢圓與二次貝塞爾曲線和三次貝塞爾曲線
- 7. 使用貝塞爾曲線
- 8. 如何在光柵中繪製反鋸齒貝塞爾曲線?
- 9. 使用谷歌地圖折線繪製貝塞爾曲線
- 10. 如何使用Python的PIL繪製貝塞爾曲線?
- 11. 使用貝塞爾曲線繪製螺旋
- 12. 如何使用貝塞爾曲線繪製B樣條?
- 13. 使用C++的貝塞爾曲線opengl
- 14. 在QML中繪製虛線和點狀的貝塞爾曲線
- 15. HTML5畫布:用負載繪製的貝塞爾曲線
- 16. 用我的手指在iOS中繪製貝塞爾曲線?
- 17. 繪製超過3個控制點的貝塞爾曲線
- 18. 貝塞爾曲線計算
- 19. n階貝塞爾曲線?
- 20. 在貝塞爾曲線之間繪製垂直線
- 21. 貝塞爾曲線和法國曲線
- 22. 如何用svg循環繪製貝塞爾曲線?
- 23. 繪製具有二次貝塞爾曲線的隨機路徑
- 24. 繪製貝塞爾曲線的最佳方法
- 25. 繪製組給點之間的貝塞爾曲線
- 26. OpenGL:如何繪製度數高於8的貝塞爾曲線?
- 27. 如何動態繪製「漂亮」的貝塞爾曲線?
- 28. 在OpenGL/GLSL中繪製貝塞爾曲線的內部陰影
- 29. 在貝塞爾曲線繪製的曲線上實現觸摸方法
- 30. 在Actionscript中繪製三次貝塞爾曲線?
謝謝,但有傳遞一個點陣列這種方法的任何選項?因爲我需要通過點數組來存儲和重繪曲線。另一個,我在文檔http://www.cocos2d-x.org/reference/native-cpp/V2.2.3/d6/da4/group__global.html中看到這個警告:'警告 這個函數可能會很慢。僅用於調試目的。「我需要擔心這個警告嗎? – R4j
請檢查CCDdrawprimitives.cpp中的函數'ccDrawQuadBezier'。所有細節都在那裏。複製並製作您的版本。而且我認爲glDrawArrays函數並沒有那麼糟糕。如果您懷疑,請將其進行歸檔 –