Example usage for org.lwjgl.opengl GL11 glStencilFunc

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

Introduction

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

Prototype

public static void glStencilFunc(@NativeType("GLenum") int func, @NativeType("GLint") int ref,
        @NativeType("GLuint") int mask) 

Source Link

Document

Controls the stencil test.

Usage

From source file:blusunrize.immersiveengineering.client.render.TileRenderBottlingMachine.java

@Override
public void render(TileEntityBottlingMachine te, double x, double y, double z, float partialTicks,
        int destroyStage, float alpha) {
    if (!te.formed || te.isDummy() || !te.getWorld().isBlockLoaded(te.getPos(), false))
        return;/*from w  w  w  .j av  a2 s. com*/

    //Grab model + correct eextended state
    final BlockRendererDispatcher blockRenderer = Minecraft.getMinecraft().getBlockRendererDispatcher();
    BlockPos blockPos = te.getPos();
    IBlockState state = getWorld().getBlockState(blockPos);
    if (state.getBlock() != IEContent.blockMetalMultiblock)
        return;
    state = state.getBlock().getActualState(state, getWorld(), blockPos);
    state = state.withProperty(IEProperties.DYNAMICRENDER, true);
    IBakedModel model = blockRenderer.getBlockModelShapes().getModelForState(state);

    //Initialize Tesselator and BufferBuilder
    Tessellator tessellator = Tessellator.getInstance();
    BufferBuilder worldRenderer = tessellator.getBuffer();
    //Outer GL Wrapping, initial translation
    GlStateManager.pushMatrix();
    GlStateManager.translate(x + .5, y + .5, z + .5);
    if (te.mirrored)
        GlStateManager.scale(te.facing.getXOffset() == 0 ? -1 : 1, 1, te.facing.getZOffset() == 0 ? -1 : 1);

    //Item Displacement
    float[][] itemDisplays = new float[te.bottlingProcessQueue.size()][];
    //Animations
    float lift = 0;

    for (int i = 0; i < itemDisplays.length; i++) {
        BottlingProcess process = te.bottlingProcessQueue.get(i);
        if (process == null || process.processTick == process.maxProcessTick)
            continue;

        //+partialTicks
        float processTimer = ((float) process.processTick) / process.maxProcessTick * 120;

        float itemX = -1.5f;//-1;
        float itemY = -.15625f;// -.34375f;
        float itemZ = 1;//-.9375f;
        float itemFill = 0;//ClientUtils.mc().player.ticksExisted%100; //0f;

        if (processTimer <= 35)//slide
        {
            itemX += processTimer / 35f * 1.5;
        } else if (processTimer <= 85)//slide
        {
            itemX = 0;
            if (processTimer <= 55)
                lift = (processTimer - 35) / 20f * .125f;
            else if (processTimer <= 65) {
                lift = .125f;
                itemFill = (processTimer - 55) / 10f;
            } else {
                lift = (85 - processTimer) / 20f * .125f;
                itemFill = 1;
            }
            itemY += lift;
            lift += .0625;
        } else {
            itemX = (processTimer - 85) / 35f * 1.5f;
            itemFill = 1;
        }
        itemDisplays[i] = new float[] { processTimer, itemX, itemY, itemZ, itemFill };

    }

    ClientUtils.bindAtlas();
    GlStateManager.pushMatrix();

    GlStateManager.translate(0, lift, 0);
    renderModelPart(blockRenderer, tessellator, worldRenderer, te.getWorld(), state, model, blockPos, "lift");
    GlStateManager.translate(0, -lift, 0);

    RenderHelper.enableStandardItemLighting();
    GlStateManager.popMatrix();

    switch (te.facing) {
    case NORTH:
        break;
    case SOUTH:
        GlStateManager.rotate(180, 0, 1, 0);
        break;
    case WEST:
        GlStateManager.rotate(90, 0, 1, 0);
        break;
    case EAST:
        GlStateManager.rotate(-90, 0, 1, 0);
        break;
    }

    float scale = .0625f;
    FluidStack fs = te.tanks[0].getFluid();
    if (fs != null) {
        GlStateManager.pushMatrix();
        float level = fs.amount / (float) te.tanks[0].getCapacity();
        GlStateManager.translate(-.21875, .376, 1.21875);
        GlStateManager.scale(scale, scale, scale);
        float h = level * 9;
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, h);
        GlStateManager.rotate(90, 0, 1, 0);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, h);
        GlStateManager.rotate(90, 0, 1, 0);
        GlStateManager.translate(-7, 0, 7);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, h);
        GlStateManager.rotate(90, 0, 1, 0);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, h);

        GlStateManager.rotate(90, 1, 0, 0);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, 7);
        GlStateManager.translate(0, 0, -h);
        ClientUtils.drawRepeatedFluidSprite(fs, 0, 0, 7, 7);

        GlStateManager.scale(1 / scale, 1 / scale, 1 / scale);
        GlStateManager.translate(0, -1, -1);
        GlStateManager.popMatrix();
    }

    //DRAW ITEMS HERE
    for (int i = 0; i < itemDisplays.length; i++)
        if (itemDisplays[i] != null) {
            BottlingProcess process = te.bottlingProcessQueue.get(i);
            if (process == null)
                continue;

            ItemStack display = itemDisplays[i][4] == 0 || process.items.get(1).isEmpty() ? process.items.get(0)
                    : process.items.get(1);
            scale = .4375f;

            GlStateManager.translate(itemDisplays[i][1], itemDisplays[i][2], itemDisplays[i][3]);
            GlStateManager.scale(scale, scale, scale);

            if (itemDisplays[i][4] == 0)
                ClientUtils.mc().getRenderItem().renderItem(process.items.get(0),
                        ItemCameraTransforms.TransformType.FIXED);
            else if (itemDisplays[i][4] == 1 || !ClientProxy.stencilBufferEnabled)
                ClientUtils.mc().getRenderItem().renderItem(display, ItemCameraTransforms.TransformType.FIXED);
            else {
                float h0 = -.5f;
                float h1 = h0 + itemDisplays[i][4];

                BufferBuilder worldrenderer = tessellator.getBuffer();

                //TODO move to GlStateManager if that ever gets the stencil functions
                GL11.glEnable(GL11.GL_STENCIL_TEST);

                GlStateManager.colorMask(false, false, false, false);
                GlStateManager.depthMask(false);

                GL11.glStencilFunc(GL11.GL_NEVER, 1, 0xFF);
                GL11.glStencilOp(GL11.GL_REPLACE, GL11.GL_KEEP, GL11.GL_KEEP);

                GL11.glStencilMask(0xFF);
                GlStateManager.clear(GL11.GL_STENCIL_BUFFER_BIT);

                GlStateManager.rotate(90.0F - ClientUtils.mc().getRenderManager().playerViewY, 0.0F, 1.0F,
                        0.0F);

                GlStateManager.disableTexture2D();
                worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);
                ClientUtils.renderBox(worldrenderer, -.5, h0, -.5, .5, h1, .5);
                tessellator.draw();
                GlStateManager.enableTexture2D();

                GlStateManager.rotate(-(90.0F - ClientUtils.mc().getRenderManager().playerViewY), 0.0F, 1.0F,
                        0.0F);

                GlStateManager.colorMask(true, true, true, true);
                GlStateManager.depthMask(true);

                GL11.glStencilMask(0x00);

                GL11.glStencilFunc(GL11.GL_EQUAL, 0, 0xFF);
                ClientUtils.mc().getRenderItem().renderItem(process.items.get(0),
                        ItemCameraTransforms.TransformType.FIXED);

                GL11.glStencilFunc(GL11.GL_EQUAL, 1, 0xFF);
                ClientUtils.mc().getRenderItem().renderItem(display, ItemCameraTransforms.TransformType.FIXED);

                GL11.glDisable(GL11.GL_STENCIL_TEST);
            }

            GlStateManager.scale(1 / scale, 1 / scale, 1 / scale);
            GlStateManager.translate(-itemDisplays[i][1], -itemDisplays[i][2], -itemDisplays[i][3]);
        }
    GlStateManager.popMatrix();
}

From source file:com.ardor3d.scene.state.lwjgl.LwjglStencilStateUtil.java

License:Open Source License

private static void applyFunc(final int glfunc, final int stencilRef, final int funcMask,
        final StencilStateRecord record, final int face) {
    // if (!record.isValid() || glfunc != record.func[face] || stencilRef != record.ref[face]
    // || funcMask != record.funcMask[face]) {
    GL11.glStencilFunc(glfunc, stencilRef, funcMask);
    // record.func[face] = glfunc;
    // record.ref[face] = stencilRef;
    // record.funcMask[face] = funcMask;
    // }//  w  w  w  .  ja v a 2  s.  c  o m
}

From source file:com.badlogic.gdx.backends.jglfw.JglfwGL20.java

License:Apache License

public void glStencilFunc(int func, int ref, int mask) {
    GL11.glStencilFunc(func, ref, mask);
}

From source file:com.badlogic.gdx.backends.lwjgl.LwjglGL10.java

License:Apache License

public final void glStencilFunc(int func, int ref, int mask) {
    GL11.glStencilFunc(func, ref, mask);
}

From source file:com.sriramramani.droid.inspector.ui.InspectorCanvas.java

License:Mozilla Public License

public InspectorCanvas(Composite parent, int style, GLData data) {
    super(parent, style, data);
    setCurrent();/*from   w w  w  . j ava  2  s . c  o  m*/

    // Clear the canvas.
    GL11.glClearColor(CLEAR_COLOR[0], CLEAR_COLOR[1], CLEAR_COLOR[2], CLEAR_COLOR[3]);
    GL11.glClearDepth(1.0f);
    GL11.glLineWidth(1.0f);
    GL11.glPointSize(1.0f);

    GL11.glShadeModel(GL11.GL_FLAT);

    GL11.glEnable(GL11.GL_LINE_SMOOTH);
    GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST);

    GL11.glEnable(GL11.GL_POLYGON_SMOOTH);
    GL11.glHint(GL11.GL_POLYGON_SMOOTH_HINT, GL11.GL_NICEST);

    GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);

    GL11.glDisable(GL11.GL_LIGHTING);

    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glDepthMask(true);
    GL11.glDepthFunc(GL11.GL_LEQUAL);

    GL11.glEnable(GL11.GL_ALPHA_TEST);
    GL11.glAlphaFunc(GL11.GL_GREATER, 0.01f);

    GL11.glEnable(GL11.GL_STENCIL_TEST);
    GL11.glStencilFunc(GL11.GL_ALWAYS, 0x1, 0xf);
    GL11.glStencilOp(GL11.GL_INCR, GL11.GL_KEEP, GL11.GL_INCR);

    GL11.glEnable(GL11.GL_BLEND);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

    reset();

    mTransform = new Matrix4f();
    mTransform.setIdentity();

    addListener(SWT.Resize, this);
    addListener(SWT.Paint, this);
    addMouseListener(this);
    addMouseWheelListener(this);
}

From source file:com.sriramramani.droid.inspector.ui.InspectorCanvas.java

License:Mozilla Public License

private void drawOverdraw(int level) {
    GL11.glPushAttrib(GL11.GL_STENCIL_BUFFER_BIT);

    GL11.glStencilFunc(level == 5 ? GL11.GL_LEQUAL : GL11.GL_EQUAL, level, 0xf);
    GL11.glStencilOp(GL11.GL_KEEP, GL11.GL_KEEP, GL11.GL_KEEP);

    GL11.glTranslatef(mNode.bounds.x, -mNode.bounds.y, 0.0f);

    if (level == 2) {
        loadColor(ColorType.OVERDRAW_BLUE);
    } else if (level == 3) {
        loadColor(ColorType.OVERDRAW_GREEN);
    } else if (level == 4) {
        loadColor(ColorType.OVERDRAW_RED_LOW);
    } else if (level > 4) {
        loadColor(ColorType.OVERDRAW_RED_HIGH);
    }/*from  w w  w. j  a va 2 s .  c o  m*/

    GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_FILL);
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex3f(0.0f, 0.0f, 0.0f);
    GL11.glVertex3f(mNode.bounds.width, 0.0f, 0.0f);
    GL11.glVertex3f(mNode.bounds.width, -mNode.bounds.height, 0.0f);
    GL11.glVertex3f(0.0f, -mNode.bounds.height, 0.0f);
    GL11.glEnd();

    GL11.glPopAttrib();
}

From source file:com.sriramramani.droid.inspector.ui.InspectorCanvas.java

License:Mozilla Public License

public void refresh() {
    if (mShowOverdraw) {
        GL11.glPushAttrib(GL11.GL_STENCIL_BUFFER_BIT);
        GL11.glStencilFunc(GL11.GL_ALWAYS, 0x1, 0xf);
        GL11.glStencilOp(GL11.GL_INCR, GL11.GL_KEEP, GL11.GL_INCR);
    }/*from   ww w  . ja v  a 2 s  .c  o m*/

    // Do the actual paint.
    doPaint();

    if (mShowOverdraw) {
        GL11.glPopAttrib();
    }
}

From source file:io.root.gfx.glutils.GL.java

License:Apache License

public static void glStencilFunc(int func, int ref, int mask) {
    GL11.glStencilFunc(func, ref, mask);
}

From source file:jpcsp.graphics.RE.RenderingEngineLwjgl.java

License:Open Source License

@Override
public void setStencilFunc(int func, int ref, int mask) {
    GL11.glStencilFunc(stencilFuncToGL[func], ref, mask);
}

From source file:matteroverdrive.util.RenderUtils.java

License:Open Source License

public static void drawStencil(int xMin, int yMin, int xMax, int yMax, int mask) {
    GL11.glDisable(GL_TEXTURE_2D);//from   ww w .j a  v a  2s. co  m
    GL11.glStencilFunc(GL_ALWAYS, mask, mask);
    GL11.glStencilOp(0, 0, GL_REPLACE);
    GL11.glStencilMask(1);
    GL11.glColorMask(false, false, false, false);
    GL11.glDepthMask(false);
    Tessellator.instance.startDrawingQuads();
    Tessellator.instance.addVertex((double) xMin, (double) yMax, 0.0D);
    Tessellator.instance.addVertex((double) xMax, (double) yMax, 0.0D);
    Tessellator.instance.addVertex((double) xMax, (double) yMin, 0.0D);
    Tessellator.instance.addVertex((double) xMin, (double) yMin, 0.0D);
    Tessellator.instance.draw();
    GL11.glEnable(GL_TEXTURE_2D);
    GL11.glStencilFunc(GL_EQUAL, mask, mask);
    GL11.glStencilMask(0);
    GL11.glColorMask(true, true, true, true);
    GL11.glDepthMask(true);
}