- public class GLView {
- private Vector localX;
- private Vector localY;
- private Vector localZ;
- private Vector position;
- ...
- public void rotate(Matrix matrix) {
- localX = matrix.multiply(localX);
- localY = matrix.multiply(localY);
- localZ = matrix.multiply(localZ);
- }
- public void move(Vector distance) {
- position.add(distance);
- }
- public void render(GL10 gl, Matrix parentMatrix) {
- Matrix modelMatrix = Matrix.create(localX.getX(), localY.getX(), localZ.getX(), position.getX(),
- localX.getY(), localY.getY(), localZ.getY(), position.getY(),
- localX.getZ(), localY.getZ(), localZ.getZ(), position.getZ(),
- 0, 0, 0, 1);
- Matrix modelViewMatrix = parentMatrix.multiply(modelMatrix);
- gl.glLoadMatrix(modelViewMatrix.toArray(), 0);
- // ... Render ...
- }
- }
- public class GLViewGroup extends GLView {
- private List<GLView> childViewList;
- @Override
- public void render(GL10 gl, Matrix parentMatrix) {
- for (GLView childView : childViewList) {
- childView.render(gl, parentMatrix);
- }
- }
- }