cocos2dx上的抗锯齿曲线

时间:2017-06-29 08:29:36

标签: android opengl-es cocos2d-x antialiasing cocos2d-x-3.0

有没有人知道cocos2dx的抗锯齿问题的解决方案?

DrawNode

我可以使用标准的DrawNode类并绘制基数样条线,这些样条线将转换为一组多边形。像这样:

node = DrawNode::create(9);
node->clear();
node->drawCardinalSpline(pts, tension, segments, Color4F::RED);
for (int i = 0; i < pts->count(); ++i) {
    node->drawPoint(pts->getControlPointAtIndex(i), 10, Color4F::BLUE);
}

enter image description here

这张照片上有以下文物:

  • 步进曲线边框(锯齿)
  • 线内有一些切孔。 (WTF?) 我试过了:
  • varry段号(截图 - 张力= 0,段= 120),但这没有帮助。
  • 试图以巨大的尺寸绘制它然后使用缩放 - 不起作用。
  • 使用RenderTexture获取位图并在生成的精灵上设置抗锯齿标记 - 否。
  • smoothstep着色器(在论坛上多次提到,例如,请看这里) 所有这些都导致了所有工件中只有一小部分的消失。

使用三角形绘制 我可以通过计算三角形顶点来直接绘制所有东西。我有一个有效的解决方案。它看起来像这样:enter image description here

看看曲线。 (从Android设备捕获的屏幕)。为了做到这一点,我使用了自定义DrawNode,因为我无法为不同的三角形顶点设置不同的不透明度。我的类AlphaNode:

然后我只填充Vec2顶点数组,每3个顶点调用我的AlphaNode类中的drawTriangle。在这种方法中,我通过在边界顶点上手动将alpha设置为0来获得抗锯齿: enter image description here

我想我清楚地解释了这个想法(但如果不是,我可以用后面的所有代码编写单独的可编译解决方案。)

这个解决方案绝对允许我获得我想要的任何图形。但如果我自己绘制三角形,我真的需要引擎吗? (如果有人对我的自定义绘制节点限制有什么要说的话,请 - 比如说)

LibSkia

好。我可以链接到android上的libskia。在skia侧制作一些路径对象(skia会使它们消除锯齿)。然后将其导出到位图。然后用椰子画画。但是又一次......为什么我在这种情况下需要cocos?

我会尝试寻找另一种方式。我将从每一个帮助中感到非常高兴。我真的认为它是2-3天发动机的一个重要特征 - 画线的能力......你如何为你的项目解决这个问题?你如何绘制曲线?

P.S。使用类似链接链接到cocos-forum的question

0 个答案:

没有答案