Example usage for org.lwjgl.opengl GL11 glPushMatrix

List of usage examples for org.lwjgl.opengl GL11 glPushMatrix

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL11 glPushMatrix.

Prototype

public static native void glPushMatrix();

Source Link

Document

Pushes the current matrix stack down by one, duplicating the current matrix in both the top of the stack and the entry below it.

Usage

From source file:cn.liutils.util.helper.Font.java

License:Open Source License

private void drawSingleLine(String line, int color, Align align) {
    double x0 = 0, y0 = 0;
    switch (align) {
    case CENTER:/*from  ww w . ja  v  a2s . c  om*/
        x0 = -mcFont().getStringWidth(line) / 2;
        break;
    case LEFT:
        x0 = 0;
        break;
    case RIGHT:
        x0 = -mcFont().getStringWidth(line);
        break;
    default:
        break;
    }
    GL11.glPushMatrix();
    GL11.glTranslated(x0, y0, 0);
    mcFont().drawString(line, 0, 0, color);
    GL11.glPopMatrix();
}

From source file:cn.liutils.util.render.Font.java

License:Open Source License

/**
 * @return Rectangle size//www.j  a  v a  2 s .  c o m
 */
public void drawWrapped(String str, double x, double y, double size, int color, double limit) {
    double scale = size / mcFont.FONT_HEIGHT;
    GL11.glPushMatrix();
    GL11.glTranslated(x, y, 0);
    GL11.glScaled(scale, scale, 1);
    mcFont.drawSplitString(str, 0, 0, 0xFFFFFF, (int) (limit * scale));
    GL11.glPopMatrix();
}

From source file:cn.liutils.util.render.Font.java

License:Open Source License

public void draw(String str, double x, double y, double size, int color, Align align) {
    GL11.glEnable(GL11.GL_BLEND);//from  w  w w  .  j  ava  2s  .c  om
    //GL11.glDepthMask(false);
    double scale = size / mcFont.FONT_HEIGHT;
    GL11.glPushMatrix();
    {
        GL11.glTranslated(x, y, 0);
        GL11.glScaled(scale, scale, 1);
        String[] ss = str.split("\n");
        for (int i = 0; i < ss.length; ++i) {
            GL11.glPushMatrix();
            {
                double dy = i * mcFont.FONT_HEIGHT;
                GL11.glTranslated(0, dy, 0);
                drawSingleLine(ss[i], color, align);
            }
            GL11.glPopMatrix();
        }
    }
    GL11.glPopMatrix();
}

From source file:cn.liutils.util.render.Font.java

License:Open Source License

private void drawSingleLine(String line, int color, Align align) {
    double x0 = 0, y0 = 0;
    switch (align) {
    case CENTER:/*from  www. jav a  2  s.  c o m*/
        x0 = -mcFont.getStringWidth(line) / 2;
        break;
    case LEFT:
        x0 = 0;
        break;
    case RIGHT:
        x0 = -mcFont.getStringWidth(line);
        break;
    default:
        break;
    }
    GL11.glPushMatrix();
    GL11.glTranslated(x0, y0, 0);
    mcFont.drawString(line, 0, 0, color);
    GL11.glPopMatrix();
}

From source file:cn.liutils.util.render.LambdaFont.java

License:Open Source License

public void draw(String str, double x, double y, double size, Align align) {
    GL11.glEnable(GL11.GL_BLEND);//from   w w  w  . j av  a  2 s .  co  m
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    //GL11.glDepthMask(false);
    double psx = HudUtils.SCALE_X, psy = HudUtils.SCALE_Y;
    GL11.glPushMatrix();
    {
        GL11.glTranslated(x, y, 0);
        GL11.glScaled(size, size, 1);
        String[] ss = str.split("\n");
        for (int i = 0; i < ss.length; ++i) {
            GL11.glPushMatrix();
            {
                double dy = i * (fontSize + spacing) / fontSize;
                GL11.glTranslated(0, dy, 0);
                drawSingleLine(ss[i], align);
            }
            GL11.glPopMatrix();
        }
    }
    GL11.glPopMatrix();
    //GL11.glDepthMask(true);
    HudUtils.SCALE_X = psx;
    HudUtils.SCALE_Y = psy;
}

From source file:cn.liutils.util.render.LambdaFont.java

License:Open Source License

/**
 * It must be guaranteed that the string contains no line-break characters
 * @returns area of drawing//  ww  w .  ja  va2  s .c  om
 */
public Vector2d drawLinebreak(String str, double x, double y, double size, double cst) {
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    double psx = HudUtils.SCALE_X, psy = HudUtils.SCALE_Y;
    GL11.glPushMatrix();
    GL11.glTranslated(x, y, 0);
    GL11.glScaled(size, size, 1);

    List<Pair<String, Boolean>> arr = dlbPreProc(str, size, cst);

    double spcstp = getExtent(' ').getStep();

    double y0 = 0;
    double curLen = 0;
    double maxLen = 0;
    for (int i = 0; i < arr.size(); ++i) {
        Pair<String, Boolean> pair = arr.get(i);
        double len = widthSingleLine(pair.first);
        if (size * len < cst && size * (curLen + len) > cst) {
            --i;
            maxLen = Math.max(curLen, maxLen);
            curLen = 0;
            y0 += 1.0;
            continue;
        }

        GL11.glPushMatrix();
        {
            GL11.glTranslated(curLen, y0, 0);
            drawSingleLine(pair.first, Align.LEFT);
        }
        GL11.glPopMatrix();
        curLen += len + (pair.second ? spcstp : 0);

        if (size * len > cst) {
            maxLen = Math.max(curLen, maxLen);
            curLen = 0;
            y0 += 1.0;
        }
    }
    maxLen = Math.max(curLen, maxLen);
    GL11.glPopMatrix();
    HudUtils.SCALE_X = psx;
    HudUtils.SCALE_Y = psy;

    return new Vector2d(maxLen * size, y0 * size + size + spacing * size / fontSize);
}

From source file:cn.liutils.util.RenderUtils.java

License:Open Source License

public static void renderItemIn2d(double w, ResourceLocation front, ResourceLocation back, double u1, double v1,
        double u2, double v2) {
    Vec3 a1 = newV3(0, 0, w), a2 = newV3(1, 0, w), a3 = newV3(1, 1, w), a4 = newV3(0, 1, w),
            a5 = newV3(0, 0, -w), a6 = newV3(1, 0, -w), a7 = newV3(1, 1, -w), a8 = newV3(0, 1, -w);

    Minecraft mc = Minecraft.getMinecraft();

    GL11.glPushMatrix();

    RenderUtils.loadTexture(back);//from   w  w  w .  j a va2 s .  c  o m
    t.startDrawingQuads();
    t.setNormal(0.0F, 0.0F, 1.0F);
    addVertex(a1, u2, v2);
    addVertex(a2, u1, v2);
    addVertex(a3, u1, v1);
    addVertex(a4, u2, v1);
    t.draw();

    RenderUtils.loadTexture(front);
    t.startDrawingQuads();
    t.setNormal(0.0F, 0.0F, -1.0F);
    addVertex(a8, u2, v1);
    addVertex(a7, u1, v1);
    addVertex(a6, u1, v2);
    addVertex(a5, u2, v2);
    t.draw();

    int var7;
    float var8;
    double var9;
    float var10;

    /*
     * Gets the width/16 of the currently bound texture, used to fix the
     * side rendering issues on textures != 16
     */
    int tileSize = 32;
    float tx = 1.0f / (32 * tileSize);
    float tz = 1.0f / tileSize;

    t.startDrawingQuads();
    t.setNormal(-1.0F, 0.0F, 0.0F);
    for (var7 = 0; var7 < tileSize; ++var7) {
        var8 = (float) var7 / tileSize;
        var9 = u2 - (u2 - u1) * var8 - tx;
        var10 = 1.0F * var8;
        t.addVertexWithUV(var10, 0.0D, -w, var9, v2);
        t.addVertexWithUV(var10, 0.0D, w, var9, v2);
        t.addVertexWithUV(var10, 1.0D, w, var9, v1);
        t.addVertexWithUV(var10, 1.0D, -w, var9, v1);

        t.addVertexWithUV(var10, 1.0D, w, var9, v1);
        t.addVertexWithUV(var10, 0.0D, w, var9, v2);
        t.addVertexWithUV(var10, 0.0D, -w, var9, v2);
        t.addVertexWithUV(var10, 1.0D, -w, var9, v1);
    }
    t.draw();

    GL11.glPopMatrix();
}

From source file:cn.liutils.util.RenderUtils.java

License:Open Source License

public static void renderOverlay_Equip(ResourceLocation src) {
    //Setup//ww  w  .  j a  v a 2 s. com
    GL11.glDepthFunc(GL11.GL_EQUAL);
    GL11.glDisable(GL11.GL_LIGHTING);
    loadTexture(src);
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE);
    float f7 = 0.76F;
    GL11.glMatrixMode(GL11.GL_TEXTURE);
    //Push texture mat
    GL11.glPushMatrix();
    float f8 = 0.125F;
    GL11.glScalef(f8, f8, f8);
    float f9 = Minecraft.getSystemTime() % 3000L / 3000.0F * 8.0F;
    GL11.glTranslatef(f9, 0.0F, 0.0F); //xOffset loops between 0.0 and 8.0
    GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F);
    ItemRenderer.renderItemIn2D(t, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F);
    GL11.glPopMatrix();

    //Second pass
    GL11.glPushMatrix();
    GL11.glScalef(f8, f8, f8);
    f9 = Minecraft.getSystemTime() % 4873L / 4873.0F * 8.0F; //Loop between 0 and 8, longer loop
    GL11.glTranslatef(-f9, 0.0F, 0.0F); //Still xOffset
    GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F); //However, different rotation!
    ItemRenderer.renderItemIn2D(t, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F);
    GL11.glPopMatrix();
    //Pop texture mat
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glDisable(GL11.GL_BLEND);
    GL11.glEnable(GL11.GL_LIGHTING);
    GL11.glDepthFunc(GL11.GL_LEQUAL);
}

From source file:cn.liutils.util.RenderUtils.java

License:Open Source License

public static void renderOverlay_Inv(ResourceLocation src) {
    GL11.glDepthFunc(GL11.GL_EQUAL);// w  ww.  j  a v a  2s.  co m
    GL11.glDisable(GL11.GL_LIGHTING);
    loadTexture(src);
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE);
    float f7 = 0.76F;
    //GL11.glColor4f(0.5F * f7, 0.25F * f7, 0.8F * f7, 1.0F);
    GL11.glMatrixMode(GL11.GL_TEXTURE);
    GL11.glPushMatrix();
    float f8 = 0.125F;
    GL11.glScalef(f8, f8, f8);
    float f9 = Minecraft.getSystemTime() % 3000L / 3000.0F * 8.0F;
    GL11.glTranslatef(f9, 0.0F, 0.0F);
    GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F);
    t.startDrawingQuads();
    t.addVertexWithUV(0.0, 0.0, 0.0, 0.0, 0.0);
    t.addVertexWithUV(0.0, 16.0, 0.0, 0.0, 1.0);
    t.addVertexWithUV(16.0, 16.0, 0.0, 1.0, 1.0);
    t.addVertexWithUV(16.0, 0.0, 0.0, 1.0, 0.0);
    t.draw();
    GL11.glPopMatrix();
    GL11.glPushMatrix();
    GL11.glScalef(f8, f8, f8);
    f9 = Minecraft.getSystemTime() % 4873L / 4873.0F * 8.0F;
    GL11.glTranslatef(-f9, 0.0F, 0.0F);
    GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F);
    t.startDrawingQuads();
    t.addVertexWithUV(0.0, 0.0, 0.0, 0.0, 0.0);
    t.addVertexWithUV(0.0, 16.0, 0.0, 0.0, 1.0);
    t.addVertexWithUV(16.0, 16.0, 0.0, 1.0, 1.0);
    t.addVertexWithUV(16.0, 0.0, 0.0, 1.0, 0.0);
    t.draw();
    GL11.glPopMatrix();
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glDisable(GL11.GL_BLEND);
    GL11.glEnable(GL11.GL_LIGHTING);
    GL11.glDepthFunc(GL11.GL_LEQUAL);
}

From source file:cn.liutils.util.RenderUtils.java

License:Open Source License

/**
 * Draw a cube with xwidth=w zwidth=l height=h at (0, 0, 0) with no texture.
 * <br/>Often used for debugging? ^^
 * Currently, the cube has been FORCE set to the no-lighting state. 
 * DrawObject may take over this in further versions.
 * @param w xwidth/*from   w  w w  .  j  av a2  s .  c o m*/
 * @param l zwidth
 * @param h height
 */
public static void drawCube(double w, double l, double h, boolean texture) {
    final Vec3 vs[] = { null, //placeholder
            newV3(0, 0, 0), newV3(w, 0, 0), newV3(w, 0, l), newV3(0, 0, l), newV3(0, h, 0), newV3(w, h, 0),
            newV3(w, h, l), newV3(0, h, l), };
    final int uvs[][] = { { 0, 0 }, { 1, 0 }, { 1, 1 }, { 0, 1 } };
    final int arr[][] = { { 1, 2, 3, 4 }, { 5, 6, 2, 1 }, { 7, 3, 2, 6 }, { 7, 8, 4, 3 }, { 8, 7, 6, 5 },
            { 5, 1, 4, 8 } };
    final int normals[][] = { { 0, -1, 0 }, { 0, 0, -1 }, { 1, 0, 0 }, { 0, 0, 1 }, { 0, 1, 0 }, { -1, 0, 0 } };
    GL11.glPushMatrix();
    {
        for (int i = 0; i < arr.length; ++i) {
            t.startDrawingQuads();
            t.setBrightness(15728880);
            t.setNormal(normals[i][0], normals[i][1], normals[i][2]);

            int[] va = arr[i];
            for (int j = 0; j < 4; ++j) {
                Vec3 v = vs[va[j]];
                t.addVertexWithUV(v.xCoord, v.yCoord, v.zCoord, uvs[j][0], uvs[j][1]);
            }
            t.draw();
        }
    }
    GL11.glPopMatrix();
}