Saturday, March 15, 2014

OpenGL ES 2.0 trên android - Thêm chuyển động

Thêm chuyển động

Vẽ các đối tượng trên màn hình là một tính năng khá cơ bản của OpenGL, nhưng bạn có thể làm điều này với các lớp học framwork đồ họa Android khác, bao gồm cả Canvas và các đối tượng drawable. OpenGL ES cung cấp khả năng bổ sung cho việc di chuyển và chuyển đối tượng được vẽ với không gian ba chiều hoặc theo những cách độc đáo khác để tạo ra những trải nghiệm người dùng hấp dẫn.
Trong bài học này, bạn lấy một bước chuyển tiếp vào sử dụng OpenGL ES bằng cách học làm thế nào để thêm chuyển động với một shape với phép xoay.

1.1.   Xoay một Shape

Quay một đối tượng vẽ với OpenGL ES 2.0 là tương đối đơn giản. Bạn tạo ra một ma trận biến đổi (một ma trận xoay) và sau đó kết hợp nó với chiếu của bạn với camera ma trận biến đổi:
private float[] mRotationMatrix = new float[16];

public void onDrawFrame(GL10 gl) {

    ...

    float[] scratch = new float[16];

    // Create a rotation transformation for the triangle
    long time = SystemClock.uptimeMillis() % 4000L;
    float angle = 0.090f * ((int) time);
    Matrix.setRotateM(mRotationMatrix, 0, angle, 0, 0, -1.0f);

    // Combine the rotation matrix with the projection and camera view
    // Note that the mMVPMatrix factor *must be first* in order
    // for the matrix multiplication product to be correct.
    Matrix.multiplyMM(scratch, 0, mMVPMatrix, 0, mRotationMatrix, 0);

    // Draw triangle
    mTriangle.draw(scratch);
}
Nếu tam giác của bạn không quay sau khi thực hiện những thay đổi này, chắc chắn rằng bạn đã chú thích thiết lập GLSurfaceView.RENDERMODE_WHEN_DIRTY, như được mô tả trong phần tiếp theo.

1.2.   Cho phép Rendering liên tục

Nếu bạn đã tinh tấn làm theo cùng với các mã ví dụ trong lớp này đến thời điểm này, chắc chắn rằng bạn nhận xét ra các dòng thiết lập chế độ làm chỉ vẽ khi thay đổi, nếu không OpenGL chỉ quay một lần và chờ đợi cho một cuộc gọi đến requestRender () từ container GLSurfaceView:
Trừ khi bạn có các đối tượng thay đổi mà không cần bất kỳ tương tác người dùng, nó thường là một ý tưởng tốt có lá cờ này bật. Hãy sẵn sàng để bỏ ghi chú mã này, bởi vì bài học tiếp theo làm cho cuộc gọi này được áp dụng một lần nữa.

No comments:

Post a Comment