我正在使用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);
}
现在,当我调用此方法并为其提供所需的参数时,屏幕上不会绘制任何内容。任何人都可以帮助我。我将非常感激。