Java源码示例:org.lwjgl.util.vector.Matrix4f
示例1
protected final void displayChangedNotify(int width, int height) {
//Reset The Current Viewport And Perspective Transformation
setDim(width, height);
if (width != 0) {
float scale = getUnitsPerPixel(Globals.GUI_Z);
Matrix4f m1 = new Matrix4f();
m1.setIdentity();
Matrix4f m2 = new Matrix4f();
m2.setIdentity();
Matrix4f m3 = new Matrix4f();
m1.scale(new Vector3f(scale, scale, scale));
m2.translate(new Vector3f(0f, 0f, -Globals.GUI_Z));
Matrix4f.mul(m2, m1, m3);
m2.load(m3);
m3.setIdentity();
m3.translate(new Vector3f(-width/2f, -height/2f, 0f));
Matrix4f.mul(m2, m3, m1);
m1.store(matrix_buf);
matrix_buf.rewind();
}
for (int i = 0; i < delegate_stack.size(); i++) {
((CameraDelegate)delegate_stack.get(i)).displayChanged(width, height);
}
}
示例2
public void resetTranslation() {
accurateResult = View.ACCURATE_ID;
accurateScale = View.ACCURATE_ID;
accurateRotationX = 0.0;
accurateRotationY = 0.0;
accurateRotationZ = 0.0;
Matrix4f.setIdentity(result);
Matrix4f.setIdentity(scale);
x_Translate = false;
y_Translate = false;
z_Translate = false;
x_Rotate = false;
y_Rotate = false;
z_Rotate = false;
x_Scale = false;
y_Scale = false;
z_Scale = false;
x_rotatingForwards = false;
x_rotatingBackwards = false;
y_rotatingForwards = false;
y_rotatingBackwards = false;
z_rotatingForwards = false;
z_rotatingBackwards = false;
modified = false;
}
示例3
public static Matrix4f createOrthoMatrix(final float left, final float right, final float bottom, final float top, final float near, final float far)
{
Matrix4f ortho = new Matrix4f();
ortho.setZero();
// First the scale part
ortho.m00 = 2.0f / (right - left);
ortho.m11 = 2.0f / (top - bottom);
ortho.m22 = (-2.0f) / (far - near);
ortho.m33 = 1.0f;
// Then the translation part
ortho.m30 = -( (right+left) / (right-left) );
ortho.m31 = -( (top+bottom) / (top-bottom) );
ortho.m32 = -( (far+near) / (far-near) );
return ortho;
}
示例4
public static void testLookAtMatrix(Vector3f eye, Vector3f center, Vector3f up)
{
// Make a lookat matrix in opengl and pull it out into a Matrix4f
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GLU.gluLookAt(eye.x, eye.y, eye.z, center.x, center.y, center.z, up.x, up.y, up.z);
FloatBuffer fromGlBuffer = BufferUtils.createFloatBuffer(16);
GL11.glGetFloat(GL11.GL_MODELVIEW, fromGlBuffer);
Matrix4f fromGl = new Matrix4f();
fromGl.load(fromGlBuffer);
Matrix4f manual = createLookAt(eye, center, up);
compare(fromGl, manual);
}
示例5
private void a(Vector3f vector, bpb blockPartRotation) {
if (blockPartRotation != null) {
Matrix4f var2 = this.a();
Vector3f var3 = new Vector3f(0.0F, 0.0F, 0.0F);
switch (blockPartRotation.b) {
case a:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(1.0F, 0.0F, 0.0F), var2, var2);
var3.set(0.0F, 1.0F, 1.0F);
break;
case b:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 1.0F, 0.0F), var2, var2);
var3.set(1.0F, 0.0F, 1.0F);
break;
case c:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 0.0F, 1.0F), var2, var2);
var3.set(1.0F, 1.0F, 0.0F);
}
if (blockPartRotation.d) {
if (Math.abs(blockPartRotation.c) == 22.5F) {
var3.scale(fieldA);
} else {
var3.scale(fieldB);
}
Vector3f.add(var3, new Vector3f(1.0F, 1.0F, 1.0F), var3);
} else {
var3.set(1.0F, 1.0F, 1.0F);
}
this.a(vector, new Vector3f(blockPartRotation.a), var2, var3);
}
}
示例6
private void a(Vector3f var, Vector3f var1, Matrix4f var2, Vector3f var3) {
Vector4f var4 = new Vector4f(var.x - var1.x, var.y - var1.y, var.z - var1.z, 1.0F);
Matrix4f.transform(var2, var4, var4);
var4.x *= var3.x;
var4.y *= var3.y;
var4.z *= var3.z;
var.set(var4.x + var1.x, var4.y + var1.y, var4.z + var1.z);
}
示例7
/**
* SLOWER, FOR PRIMITIVE CHOOSER ONLY, uses no cache, uses no bounding box!
*
* @param tMatrix
* @param lines
* @param name
* @param shortName
* @param depth
* @param det
* @param pMatrix
* @param hotMap
* @param firstRef
*/
public PGData1(Matrix4f tMatrix, List<String> lines, int depth, boolean det, Matrix4f pMatrix,
Set<String> alreadyParsed, HashMap<PGTimestamp, PGTimestamp> hotMap) {
depth++;
if (depth < 16) {
this.depth = depth;
negativeDeterminant = det;
this.productMatrix = new Matrix4f(pMatrix);
this.localMatrix = new Matrix4f(tMatrix);
matrix = BufferUtils.createFloatBuffer(16);
tMatrix.store(matrix);
matrix.position(0);
matrix2 = BufferUtils.createFloatBuffer(16);
Matrix4f tMatrix2 = new Matrix4f(tMatrix);
tMatrix2.m30 = -tMatrix2.m30;
tMatrix2.store(matrix2);
matrix2.position(0);
PGData anchorData = myGData;
for (String line : lines) {
if (isNotBlank(line)) {
PGData gdata = CompositePrimitive.parseLine(line, depth, pMatrix, alreadyParsed, hotMap);
if (gdata != null) {
anchorData.setNext(gdata);
anchorData = gdata;
}
}
}
} else {
this.depth = depth;
this.matrix = null;
this.matrix2 = null;
this.productMatrix = null;
this.localMatrix = null;
this.negativeDeterminant = false;
}
}
示例8
private void a(Vector3f var, Vector3f var1, Matrix4f var2, Vector3f var3) {
Vector4f var4 = new Vector4f(var.x - var1.x, var.y - var1.y, var.z - var1.z, 1.0F);
Matrix4f.transform(var2, var4, var4);
var4.x *= var3.x;
var4.y *= var3.y;
var4.z *= var3.z;
var.set(var4.x + var1.x, var4.y + var1.y, var4.z + var1.z);
}
示例9
public static void rebuildSelection(DatFile df) {
final Composite3D c3d = df.getLastSelectedComposite();
if (c3d == null || df.getLastSelectedComposite().isDisposed()) return;
final HashSet<GData3> selectedTriangles = selectedTrianglesMap.putIfAbsent(df, new HashSet<GData3>());
final HashSet<GDataCSG> selectedBodies = selectedBodyMap.get(df);
selectedTriangles.clear();
if (selectedBodies != null) {
try {
for (GDataCSG c : selectedBodies) {
if (c == null) {
selectedTriangles.clear();
selectedBodies.clear();
return;
}
if (c.dataCSG == null) {
selectedTriangles.clear();
} else {
for (Polygon p : c.dataCSG.getPolygons()) {
Matrix4f id = new Matrix4f();
Matrix4f.setIdentity(id);
GData1 g1 = new GData1(-1, .5f, .5f, .5f, 1f, id, View.ACCURATE_ID, new ArrayList<String>(), null, null, 1, false, id, View.ACCURATE_ID, null, View.DUMMY_REFERENCE, true, false,
new HashSet<String>(), View.DUMMY_REFERENCE);
selectedTriangles.addAll(p.toLDrawTriangles(g1).keySet());
}
}
}
if (selectedTriangles.isEmpty()) {
selectedBodies.clear();
}
} catch (ConcurrentModificationException consumed) {
}
}
}
示例10
private void a(Vector3f vector, brg blockPartRotation) {
if (blockPartRotation != null) {
Matrix4f var2 = this.a();
Vector3f var3 = new Vector3f(0.0F, 0.0F, 0.0F);
switch (blockPartRotation.b) {
case a:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(1.0F, 0.0F, 0.0F), var2, var2);
var3.set(0.0F, 1.0F, 1.0F);
break;
case b:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 1.0F, 0.0F), var2, var2);
var3.set(1.0F, 0.0F, 1.0F);
break;
case c:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 0.0F, 1.0F), var2, var2);
var3.set(1.0F, 1.0F, 0.0F);
}
if (blockPartRotation.d) {
if (Math.abs(blockPartRotation.c) == 22.5F) {
var3.scale(fieldA);
} else {
var3.scale(fieldB);
}
Vector3f.add(var3, new Vector3f(1.0F, 1.0F, 1.0F), var3);
} else {
var3.set(1.0F, 1.0F, 1.0F);
}
this.a(vector, new Vector3f(blockPartRotation.a), var2, var3);
}
}
示例11
private void a(Vector3f var, Vector3f var1, Matrix4f var2, Vector3f var3) {
Vector4f var4 = new Vector4f(var.x - var1.x, var.y - var1.y, var.z - var1.z, 1.0F);
Matrix4f.transform(var2, var4, var4);
var4.x *= var3.x;
var4.y *= var3.y;
var4.z *= var3.z;
var.set(var4.x + var1.x, var4.y + var1.y, var4.z + var1.z);
}
示例12
private void a(Vector3f vector, bvq blockPartRotation) {
if (blockPartRotation != null) {
Matrix4f var2 = this.a();
Vector3f var3 = new Vector3f(0.0F, 0.0F, 0.0F);
switch (blockPartRotation.b) {
case a:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(1.0F, 0.0F, 0.0F), var2, var2);
var3.set(0.0F, 1.0F, 1.0F);
break;
case b:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 1.0F, 0.0F), var2, var2);
var3.set(1.0F, 0.0F, 1.0F);
break;
case c:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 0.0F, 1.0F), var2, var2);
var3.set(1.0F, 1.0F, 0.0F);
}
if (blockPartRotation.d) {
if (Math.abs(blockPartRotation.c) == 22.5F) {
var3.scale(fieldA);
} else {
var3.scale(fieldB);
}
Vector3f.add(var3, new Vector3f(1.0F, 1.0F, 1.0F), var3);
} else {
var3.set(1.0F, 1.0F, 1.0F);
}
this.a(vector, new Vector3f(blockPartRotation.a), var2, var3);
}
}
示例13
private static void translateView(Composite3D c3d, float dx, float dy) {
PerspectiveCalculator perspective = c3d.getPerspectiveCalculator();
Matrix4f viewport_rotation = c3d.getRotation();
Matrix4f viewport_translation = c3d.getTranslation();
Matrix4f old_viewport_translation = new Matrix4f();
Matrix4f.load(c3d.getTranslation(), old_viewport_translation);
Vector4f xAxis4f_translation = new Vector4f(dx, 0, 0, 1.0f);
Vector4f yAxis4f_translation = new Vector4f(0, dy, 0, 1.0f);
Matrix4f ovr_inverse2 = Matrix4f.invert(viewport_rotation, null);
Matrix4f.transform(ovr_inverse2, xAxis4f_translation, xAxis4f_translation);
Matrix4f.transform(ovr_inverse2, yAxis4f_translation, yAxis4f_translation);
Vector3f xAxis3 = new Vector3f(xAxis4f_translation.x, xAxis4f_translation.y, xAxis4f_translation.z);
Vector3f yAxis3 = new Vector3f(yAxis4f_translation.x, yAxis4f_translation.y, yAxis4f_translation.z);
Matrix4f.load(old_viewport_translation, viewport_translation);
Matrix4f.translate(xAxis3, old_viewport_translation, viewport_translation);
Matrix4f.translate(yAxis3, viewport_translation, viewport_translation);
perspective.calculateOriginData();
c3d.getVertexManager().getResetTimer().set(true);
if (c3d.isSyncTranslation()) {
float tx = c3d.getTranslation().m30;
float ty = c3d.getTranslation().m31;
float tz = c3d.getTranslation().m32;
for (OpenGLRenderer renderer : Editor3DWindow.getRenders()) {
Composite3D c3d2 = renderer.getC3D();
if (!c3d2.isDisposed() && c3d != c3d2 && c3d.getLockableDatFileReference().equals(c3d2.getLockableDatFileReference())) {
c3d2.getTranslation().m30 = tx;
c3d2.getTranslation().m31 = ty;
c3d2.getTranslation().m32 = tz;
((ScalableComposite) c3d2.getParent()).redrawScales();
c3d2.getPerspectiveCalculator().initializeViewportPerspective();
}
}
}
}
示例14
public synchronized Matrix4f getLDrawMatrix() {
Matrix4f oldMatrix = new Matrix4f(matrix);
Matrix4f.transpose(oldMatrix, oldMatrix);
oldMatrix.m30 = oldMatrix.m03;
oldMatrix.m31 = oldMatrix.m13;
oldMatrix.m32 = oldMatrix.m23;
oldMatrix.m03 = 0f;
oldMatrix.m13 = 0f;
oldMatrix.m23 = 0f;
return oldMatrix;
}
示例15
private void a(Vector3f vector, bre blockPartRotation) {
if (blockPartRotation != null) {
Matrix4f var2 = this.a();
Vector3f var3 = new Vector3f(0.0F, 0.0F, 0.0F);
switch (blockPartRotation.b) {
case a:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(1.0F, 0.0F, 0.0F), var2, var2);
var3.set(0.0F, 1.0F, 1.0F);
break;
case b:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 1.0F, 0.0F), var2, var2);
var3.set(1.0F, 0.0F, 1.0F);
break;
case c:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 0.0F, 1.0F), var2, var2);
var3.set(1.0F, 1.0F, 0.0F);
}
if (blockPartRotation.d) {
if (Math.abs(blockPartRotation.c) == 22.5F) {
var3.scale(fieldA);
} else {
var3.scale(fieldB);
}
Vector3f.add(var3, new Vector3f(1.0F, 1.0F, 1.0F), var3);
} else {
var3.set(1.0F, 1.0F, 1.0F);
}
this.a(vector, new Vector3f(blockPartRotation.a), var2, var3);
}
}
示例16
private void a(Vector3f vector, boi blockPartRotation) {
if (blockPartRotation != null) {
Matrix4f var2 = this.a();
Vector3f var3 = new Vector3f(0.0F, 0.0F, 0.0F);
switch (blockPartRotation.b) {
case a:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(1.0F, 0.0F, 0.0F), var2, var2);
var3.set(0.0F, 1.0F, 1.0F);
break;
case b:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 1.0F, 0.0F), var2, var2);
var3.set(1.0F, 0.0F, 1.0F);
break;
case c:
Matrix4f.rotate(blockPartRotation.c * 0.017453292F, new Vector3f(0.0F, 0.0F, 1.0F), var2, var2);
var3.set(1.0F, 1.0F, 0.0F);
}
if (blockPartRotation.d) {
if (Math.abs(blockPartRotation.c) == 22.5F) {
var3.scale(fieldA);
} else {
var3.scale(fieldB);
}
Vector3f.add(var3, new Vector3f(1.0F, 1.0F, 1.0F), var3);
} else {
var3.set(1.0F, 1.0F, 1.0F);
}
this.a(vector, new Vector3f(blockPartRotation.a), var2, var3);
}
}
示例17
public final void transformBounds(Matrix4f matrix) {
temp_vec.set(bmin_x, bmin_y, bmin_z, 1f);
Matrix4f.transform(matrix, temp_vec, temp_vec2);
bmin_x = temp_vec2.x;
bmin_y = temp_vec2.y;
bmin_z = temp_vec2.z;
temp_vec.set(bmax_x, bmax_y, bmax_z, 1f);
Matrix4f.transform(matrix, temp_vec, temp_vec2);
bmax_x = temp_vec2.x;
bmax_y = temp_vec2.y;
bmax_z = temp_vec2.z;
computeCenter();
}
示例18
private void a(Vector3f var, Vector3f var1, Matrix4f var2, Vector3f var3) {
Vector4f var4 = new Vector4f(var.x - var1.x, var.y - var1.y, var.z - var1.z, 1.0F);
Matrix4f.transform(var2, var4, var4);
var4.x *= var3.x;
var4.y *= var3.y;
var4.z *= var3.z;
var.set(var4.x + var1.x, var4.y + var1.y, var4.z + var1.z);
}
示例19
public void zoomToFit() {
final PerspectiveCalculator pc = c3d.getPerspectiveCalculator();
float max_x = 0f;
float max_y = 0f;
for (Vertex v : c3d.getLockableDatFileReference().getVertexManager().getVertices()) {
float ax = Math.abs(v.x);
float ay = Math.abs(v.y);
if (ax > max_x) max_x = ax;
if (ay > max_y) max_y = ay;
}
Matrix4f id = new Matrix4f();
Matrix4f.setIdentity(id);
c3d.getTranslation().load(id);
Rectangle b = c3d.getBounds();
if (max_x > max_y) {
c3d.setZoom(b.width / (max_x * 4f * View.PIXEL_PER_LDU));
} else {
c3d.setZoom(b.height / (max_y * 4f * View.PIXEL_PER_LDU));
}
pc.setZoom_exponent((float) (Math.log10(c3d.getZoom()) + 3f) * 10f);
if (Float.isInfinite(c3d.getZoom()) || Float.isInfinite(pc.getZoom_exponent()) || Float.isNaN(c3d.getZoom()) || Float.isNaN(pc.getZoom_exponent())) {
pc.setZoom_exponent(-20f);
c3d.setZoom((float) Math.pow(10.0d, -20f / 10 - 3));
}
c3d.setViewportPixelPerLDU(c3d.getZoom() * View.PIXEL_PER_LDU);
GuiStatusManager.updateStatus(c3d);
((ScalableComposite) c3d.getParent()).redrawScales();
pc.initializeViewportPerspective();
syncZoom();
}
示例20
public static Vector4f multiply(Vector4f vec, Matrix4f mat) {
return new Vector4f(
vec.x * mat.m00 + vec.y * mat.m10 + vec.z * mat.m20 + vec.w * mat.m30,
vec.x * mat.m01 + vec.y * mat.m11 + vec.z * mat.m21 + vec.w * mat.m31,
vec.x * mat.m02 + vec.y * mat.m12 + vec.z * mat.m22 + vec.w * mat.m32,
vec.x * mat.m03 + vec.y * mat.m13 + vec.z * mat.m23 + vec.w * mat.m33
);
}
示例21
public GData1 compile() {
Matrix4f id = new Matrix4f();
Matrix4f.setIdentity(id);
GColour col = View.getLDConfigColour(16);
GData1 g1 = new GData1(-1, col.getR(), col.getG(), col.getB(), 1f, id, View.ACCURATE_ID, new ArrayList<String>(), null, null, 1, false, id, View.ACCURATE_ID, null, View.DUMMY_REFERENCE, true, false,
new HashSet<String>(), View.DUMMY_REFERENCE);
this.result = toLDrawTriangles(g1);
return g1;
}
示例22
@Override
public Matrix4f getProjectionViewMatrix() {
if(reflected){
return Matrix4f.mul(projectionMatrix, reflectedMatrix, null);
}else{
return Matrix4f.mul(projectionMatrix, viewMatrix, null);
}
}
示例23
public static Matrix4f createEntityRotateMatrix(Entity entity) {
double yaw = Math.toRadians(entity.rotationYaw - 180);
double pitch = Math.toRadians(entity.rotationPitch);
Matrix4f initial = new Matrix4f();
initial.rotate((float)pitch, new Vector3f(1, 0, 0));
initial.rotate((float)yaw, new Vector3f(0, 1, 0));
return initial;
}
示例24
public static void updateViewMatrix(Matrix4f viewMatrix, float x, float y, float z, float pitch, float yaw){
viewMatrix.setIdentity();
Matrix4f.rotate((float) Math.toRadians(pitch), new Vector3f(1, 0, 0), viewMatrix, viewMatrix);
Matrix4f.rotate((float) Math.toRadians(yaw), new Vector3f(0, 1, 0), viewMatrix, viewMatrix);
Vector3f negativeCameraPos = new Vector3f(-x, -y, -z);
Matrix4f.translate(negativeCameraPos, viewMatrix, viewMatrix);
}
示例25
private static void VecTransformCoordinate(Vector4f vec, Matrix4f matrix) {
float x = vec.x;
float y = vec.y;
float z = vec.z;
vec.x = (x * matrix.m00) + (y * matrix.m10) + (z * matrix.m20) + matrix.m30;
vec.y = (x * matrix.m01) + (y * matrix.m11) + (z * matrix.m21) + matrix.m31;
vec.z = (x * matrix.m02) + (y * matrix.m12) + (z * matrix.m22) + matrix.m32;
vec.w = (x * matrix.m03) + (y * matrix.m13) + (z * matrix.m23) + matrix.m33;
}
示例26
/**
* This method should be called each frame to update the animation currently
* being played. This increases the animation time (and loops it back to
* zero if necessary), finds the pose that the entity should be in at that
* time of the animation, and then applies that pose to all the model's
* joints by setting the joint transforms.
*/
public void update() {
if (currentAnimation == null) {
return;
}
increaseAnimationTime();
Map<String, Matrix4f> currentPose = calculateCurrentAnimationPose();
applyPoseToJoints(currentPose, entity.getRootJoint(), new Matrix4f());
}
示例27
public static Matrix4f glOrtho(double l, double r, double b, double t, double n, double f) {
Matrix4f result = new Matrix4f();
result.m00 = (float) (2 / (r - l));
result.m30 = (float) (- (r + l) / (r - l));
result.m11 = (float) (2 / (t - b));
result.m31 = (float) (- (t + b) / (t - b));
result.m22 = (float) (- 2 / (f - n));
result.m23 = (float) (- (f + n) / (f - n));
result.m33 = 1f;
return result;
}
示例28
public void loadIntoMatrix(Matrix4f transformation) {
transformation.setIdentity();
transformation.m30 = position.x;
transformation.m31 = position.y;
transformation.m32 = position.z;
transformation.m00 = xAxis.x;
transformation.m01 = xAxis.y;
transformation.m02 = xAxis.z;
transformation.m10 = yAxis.x;
transformation.m11 = yAxis.y;
transformation.m12 = yAxis.z;
transformation.m20 = zAxis.x;
transformation.m21 = zAxis.y;
transformation.m22 = zAxis.z;
}
示例29
public static void testOrthoMatrix(final int left, final int right, final int bottom, final int top, final int near, final int far)
{
// Make an ortho matrix in opengl and pull it out into a Matrix4f
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GL11.glOrtho(left, right, bottom, top, near, far);
FloatBuffer fromGlBuffer = BufferUtils.createFloatBuffer(16);
GL11.glGetFloat(GL11.GL_MODELVIEW, fromGlBuffer);
Matrix4f fromGl = new Matrix4f();
fromGl.load(fromGlBuffer);
Matrix4f manual = createOrthoMatrix(left, right, bottom, top, near, far);
compare(fromGl, manual);
}
示例30
public void setCameraMatrix(Matrix4f matrix, Vector3f lookAt, Vector3f eye, Vector3f up)
{
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
FloatBuffer buffer = BufferUtils.createFloatBuffer(16);
matrix.store(buffer);
buffer.flip();
GL11.glLoadMatrix(buffer);
}