Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 package org.ros.android.view.visualization;
00018
00019 import org.ros.rosjava_geometry.Transform;
00020
00021 import java.nio.FloatBuffer;
00022
00023 import javax.microedition.khronos.opengles.GL10;
00024
00031 public class OpenGlTransform {
00032
00033 private static final ThreadLocal<FloatBuffer> buffer = new ThreadLocal<FloatBuffer>() {
00034 @Override
00035 protected FloatBuffer initialValue() {
00036 return FloatBuffer.allocate(16);
00037 };
00038
00039 @Override
00040 public FloatBuffer get() {
00041 FloatBuffer buffer = super.get();
00042 buffer.clear();
00043 return buffer;
00044 };
00045 };
00046
00047 private OpenGlTransform() {
00048
00049 }
00050
00059 public static void apply(GL10 gl, Transform transform) {
00060 FloatBuffer matrix = buffer.get();
00061 for (double value : transform.toMatrix()) {
00062 matrix.put((float) value);
00063 }
00064 matrix.position(0);
00065 gl.glMultMatrixf(matrix);
00066 }
00067 }