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);
}
必要なパラメーターを指定してこのメソッドを呼び出すと、画面には何も描画されません。誰でもそれを手伝ってもらえますか。とても感謝しています。