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