1

我正在使用AndEngine。现在的问题是我想在场景中绘制贝塞尔曲线。我知道没有内置功能可以做到这一点。所以我以自定义方式计算了点等。现在我很困惑,我怎么能在场景中画线。

我覆盖了方法

    myScene = new Scene()
    {
         @Override
        protected void onManagedDraw(GL10 pGL, Camera pCamera) {

             log("Draw","in Draw");

            super.onManagedDraw(pGL, pCamera);
        }
    };

日志工作正常。我用于画线的代码。

 public static void DrawQuadBezier(GL10 gl, CGPoint origin, CGPoint control,
        CGPoint destination, int segments) {

    FastFloatBuffer vertices = getVertices(2 * (segments + 1));

    float t = 0.0f;
    for(int i = 0; i < segments; i++) {
        float x = (float)Math.pow(1 - t, 2) * origin.x + 2.0f * (1 - t) * t * control.x + t * t * destination.x;
        float y = (float)Math.pow(1 - t, 2) * origin.y + 2.0f * (1 - t) * t * control.y + t * t * destination.y;
        vertices.put(x);
        vertices.put(y);
        t += 1.0f / segments;
    }
    vertices.put(destination.x);
    vertices.put(destination.y);

    vertices.position(0);

    gl.glDisable(GL10.GL_TEXTURE_2D);
    gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    gl.glDisableClientState(GL10.GL_COLOR_ARRAY);

    gl.glVertexPointer(2, GL_FLOAT, 0, vertices.bytes);
    gl.glDrawArrays(GL_LINE_STRIP, 0, segments + 1);

    // restore default state
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    gl.glEnable(GL10.GL_TEXTURE_2D);    
}   

现在,当我调用此方法并为其提供所需的参数时,屏幕上不会绘制任何内容。任何人都可以帮助我。我将非常感激。

4

0 回答 0