Example usage for org.lwjgl.opengl GL11 glTexParameterf

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

Introduction

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

Prototype

public static void glTexParameterf(@NativeType("GLenum") int target, @NativeType("GLenum") int pname,
        @NativeType("GLfloat") float param) 

Source Link

Document

Float version of #glTexParameteri TexParameteri .

Usage

From source file:dataAccess.lwjgl.VAO_Loader.java

public static int loadTexture(File file) {
    int textureID;
    if (textureMap.containsKey(file.getAbsolutePath())) {
        textureID = textureMap.get(file.getAbsolutePath());
    } else {//from   w  w w.  j a  va 2  s .c om
        Texture texture = null;
        try {
            texture = TextureLoader.getTexture("PNG", new FileInputStream(file));

        } catch (IOException ex) {
            Logger.getLogger(VAO_Loader.class.getName()).log(Level.SEVERE, null, ex);
        }
        textureID = texture.getTextureID();
        textureMap.put(file.getAbsolutePath(), textureID);
    }
    GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
    GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR);
    GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, 0f);
    if (GLContext.getCapabilities().GL_EXT_texture_filter_anisotropic) {
        if (Settings.ANISOTROPIC_FILTERING) {
            float amount = Math.min(4f,
                    GL11.glGetFloat(EXTTextureFilterAnisotropic.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT));
            GL11.glTexParameterf(GL11.GL_TEXTURE_2D, EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT,
                    amount);
        }
    } else {
        System.out.println("no anisotropic filtering possible!");
    }
    return textureID;
}

From source file:fr.blaze_empire.phenix246.projector_mod.client.TileEntitySpotlightRender.java

License:Creative Commons License

public void renderLaser(TileEntityEmitter tileentity, double x, double y, double z, float tick) {
    block1 = ProjectorMod.emitter;//from w w w  .j av  a 2 s .c o m
    block2 = ProjectorMod.transmitter;
    xCoord = tileentity.xCoord;
    yCoord = tileentity.yCoord;
    zCoord = tileentity.zCoord;
    world = tileentity.getWorldObj();
    direction = tileentity.getDirection();

    f0 = 0.0F;
    f1 = 1.0F;
    d0 = 0.0D;
    d1 = 1.0D;

    distanceT = MathsHelper.getMaxLengh(world, xCoord, yCoord, zCoord);
    distance = (MathsHelper.getMaxLengh(world, xCoord, yCoord, zCoord) + 0.5F);
    recepter = MathsHelper.getRecepeterBlock(world, xCoord, yCoord, zCoord);

    if (world.getBlock(xCoord, yCoord, zCoord) == block1)
        isActive = world.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord);
    if (world.getBlock(xCoord, yCoord, zCoord) == block2) // instance
    {
        TileEntityTransmitter tile = (TileEntityTransmitter) tileentity;
        isActive = tile.isActive();
    }

    // ///////////////////////////////////////////////////////////////

    // Render

    GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);

    if (isActive) {

        Tessellator tessellator = Tessellator.instance;
        this.bindTexture(texture);

        GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F);
        GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F);
        GL11.glDisable(GL11.GL_LIGHTING);
        GL11.glDisable(GL11.GL_CULL_FACE);
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glDepthMask(true);
        OpenGlHelper.glBlendFunc(770, 1, 1, 0);

        time = (float) world.getTotalWorldTime() + tick;
        f3 = -time * 0.2F - (float) MathHelper.floor_float(-time * 0.1F);
        b0 = 1;
        d3 = (double) time * 0.025D * (d1 - (double) (b0 & 1) * 2.5D);

        // ///////////////////////////////////////////////////////////////

        // determine the coordinates

        d5 = (double) b0 * 0.2D;
        d7 = 0.5D + Math.cos(d3 + 2.356194490192345D) * d5;
        d9 = 0.5D + Math.sin(d3 + 2.356194490192345D) * d5;
        d11 = 0.5D + Math.cos(d3 + (Math.PI / 4D)) * d5;
        d13 = 0.5D + Math.sin(d3 + (Math.PI / 4D)) * d5;
        d15 = 0.5D + Math.cos(d3 + 3.9269908169872414D) * d5;
        d17 = 0.5D + Math.sin(d3 + 3.9269908169872414D) * d5;
        d19 = 0.5D + Math.cos(d3 + 5.497787143782138D) * d5;
        d21 = 0.5D + Math.sin(d3 + 5.497787143782138D) * d5;
        d25 = 0.0D;
        d27 = 1.0D;
        d28 = (double) (-f1 + f3);

        d4 = 0.2D;
        d6 = 0.8D;
        d8 = 0.2D;
        d10 = 0.2D;
        d12 = 0.8D;
        d14 = 0.8D;
        d16 = 0.8D;
        d20 = 0.0D;
        d22 = 1.0D;
        d24 = (double) (-f1 + f3);
        d30 = 0.2D;

        // ///////////////////////////////////////////////////////////////

        // determine the colors
        short[] rgb = { 255, 255, 255 };
        rgb[0] = tileentity.getRed();
        rgb[1] = tileentity.getGreen();
        rgb[2] = tileentity.getBlue();

        // = MathsHelper.getRGB(world, xCoord, yCoord, zCoord, tileentity);
        // // Send colors (RBG)
        // MathsHelper.sendRGB(world, xCoord, yCoord, zCoord, rgb[0],
        // rgb[1], rgb[2]);

        // ///////////////////////////////////////////////////////////////

        tessellator.startDrawingQuads();
        tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

        if (direction == 0) // bottom /** -Y */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            y = y + 0.5D;

            tessellator.addVertexWithUV(x + d7, y - d23, z + d9, d27, d29);
            tessellator.addVertexWithUV(x + d7, y + d0, z + d9, d27, d28);
            tessellator.addVertexWithUV(x + d11, y + d0, z + d13, d25, d28);
            tessellator.addVertexWithUV(x + d11, y - d23, z + d13, d25, d29);

            tessellator.addVertexWithUV(x + d19, y - d23, z + d21, d27, d29);
            tessellator.addVertexWithUV(x + d19, y + d0, z + d21, d27, d28);
            tessellator.addVertexWithUV(x + d15, y + d0, z + d17, d25, d28);
            tessellator.addVertexWithUV(x + d15, y - d23, z + d17, d25, d29);

            tessellator.addVertexWithUV(x + d11, y - d23, z + d13, d27, d29);
            tessellator.addVertexWithUV(x + d11, y + d0, z + d13, d27, d28);
            tessellator.addVertexWithUV(x + d19, y + d0, z + d21, d25, d28);
            tessellator.addVertexWithUV(x + d19, y - d23, z + d21, d25, d29);

            tessellator.addVertexWithUV(x + d15, y - d23, z + d17, d27, d29);
            tessellator.addVertexWithUV(x + d15, y + d0, z + d17, d27, d28);
            tessellator.addVertexWithUV(x + d7, y + d0, z + d9, d25, d28);
            tessellator.addVertexWithUV(x + d7, y - d23, z + d9, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d30, y - d18, z + d4, d22, d26);
            tessellator.addVertexWithUV(x + d30, y + d0, z + d4, d22, d24);
            tessellator.addVertexWithUV(x + d6, y + d0, z + d8, d20, d24);
            tessellator.addVertexWithUV(x + d6, y - d18, z + d8, d20, d26);

            tessellator.addVertexWithUV(x + d14, y - d18, z + d16, d22, d26);
            tessellator.addVertexWithUV(x + d14, y + d0, z + d16, d22, d24);
            tessellator.addVertexWithUV(x + d10, y + d0, z + d12, d20, d24);
            tessellator.addVertexWithUV(x + d10, y - d18, z + d12, d20, d26);

            tessellator.addVertexWithUV(x + d6, y - d18, z + d8, d22, d26);
            tessellator.addVertexWithUV(x + d6, y + d0, z + d8, d22, d24);
            tessellator.addVertexWithUV(x + d14, y + d0, z + d16, d20, d24);
            tessellator.addVertexWithUV(x + d14, y - d18, z + d16, d20, d26);

            tessellator.addVertexWithUV(x + d10, y - d18, z + d12, d22, d26);
            tessellator.addVertexWithUV(x + d10, y + d0, z + d12, d22, d24);
            tessellator.addVertexWithUV(x + d30, y + d0, z + d4, d20, d24);
            tessellator.addVertexWithUV(x + d30, y - d18, z + d4, d20, d26);
        }
        if (direction == 1) // Top /** +Y */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            y = y + 0.5D;

            tessellator.addVertexWithUV(x + d7, y + d23, z + d9, d27, d29);
            tessellator.addVertexWithUV(x + d7, y + d0, z + d9, d27, d28);
            tessellator.addVertexWithUV(x + d11, y + d0, z + d13, d25, d28);
            tessellator.addVertexWithUV(x + d11, y + d23, z + d13, d25, d29);

            tessellator.addVertexWithUV(x + d19, y + d23, z + d21, d27, d29);
            tessellator.addVertexWithUV(x + d19, y + d0, z + d21, d27, d28);
            tessellator.addVertexWithUV(x + d15, y + d0, z + d17, d25, d28);
            tessellator.addVertexWithUV(x + d15, y + d23, z + d17, d25, d29);

            tessellator.addVertexWithUV(x + d11, y + d23, z + d13, d27, d29);
            tessellator.addVertexWithUV(x + d11, y + d0, z + d13, d27, d28);
            tessellator.addVertexWithUV(x + d19, y + d0, z + d21, d25, d28);
            tessellator.addVertexWithUV(x + d19, y + d23, z + d21, d25, d29);

            tessellator.addVertexWithUV(x + d15, y + d23, z + d17, d27, d29);
            tessellator.addVertexWithUV(x + d15, y + d0, z + d17, d27, d28);
            tessellator.addVertexWithUV(x + d7, y + d0, z + d9, d25, d28);
            tessellator.addVertexWithUV(x + d7, y + d23, z + d9, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d30, y + d18, z + d4, d22, d26);
            tessellator.addVertexWithUV(x + d30, y + d0, z + d4, d22, d24);
            tessellator.addVertexWithUV(x + d6, y + d0, z + d8, d20, d24);
            tessellator.addVertexWithUV(x + d6, y + d18, z + d8, d20, d26);

            tessellator.addVertexWithUV(x + d14, y + d18, z + d16, d22, d26);
            tessellator.addVertexWithUV(x + d14, y + d0, z + d16, d22, d24);
            tessellator.addVertexWithUV(x + d10, y + d0, z + d12, d20, d24);
            tessellator.addVertexWithUV(x + d10, y + d18, z + d12, d20, d26);

            tessellator.addVertexWithUV(x + d6, y + d18, z + d8, d22, d26);
            tessellator.addVertexWithUV(x + d6, y + d0, z + d8, d22, d24);
            tessellator.addVertexWithUV(x + d14, y + d0, z + d16, d20, d24);
            tessellator.addVertexWithUV(x + d14, y + d18, z + d16, d20, d26);

            tessellator.addVertexWithUV(x + d10, y + d18, z + d12, d22, d26);
            tessellator.addVertexWithUV(x + d10, y + d0, z + d12, d22, d24);
            tessellator.addVertexWithUV(x + d30, y + d0, z + d4, d20, d24);
            tessellator.addVertexWithUV(x + d30, y + d18, z + d4, d20, d26);
        }

        if (direction == 2) // South /** +Z */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            z = z + 0.5D;

            tessellator.addVertexWithUV(x + d7, y + d9, z + d23, d27, d29);
            tessellator.addVertexWithUV(x + d7, y + d9, z + d0, d27, d28);
            tessellator.addVertexWithUV(x + d11, y + d13, z + d0, d25, d28);
            tessellator.addVertexWithUV(x + d11, y + d13, z + d23, d25, d29);

            tessellator.addVertexWithUV(x + d19, y + d21, z + d23, d27, d29);
            tessellator.addVertexWithUV(x + d19, y + d21, z + d0, d27, d28);
            tessellator.addVertexWithUV(x + d15, y + d17, z + d0, d25, d28);
            tessellator.addVertexWithUV(x + d15, y + d17, z + d23, d25, d29);

            tessellator.addVertexWithUV(x + d11, y + d13, z + d23, d27, d29);
            tessellator.addVertexWithUV(x + d11, y + d13, z + d0, d27, d28);
            tessellator.addVertexWithUV(x + d19, y + d21, z + d0, d25, d28);
            tessellator.addVertexWithUV(x + d19, y + d21, z + d23, d25, d29);

            tessellator.addVertexWithUV(x + d15, y + d17, z + d23, d27, d29);
            tessellator.addVertexWithUV(x + d15, y + d17, z + d0, d27, d28);
            tessellator.addVertexWithUV(x + d7, y + d9, z + d0, d25, d28);
            tessellator.addVertexWithUV(x + d7, y + d9, z + d23, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d30, y + d4, z + d18, d22, d26);
            tessellator.addVertexWithUV(x + d30, y + d4, z + d0, d22, d24);
            tessellator.addVertexWithUV(x + d6, y + d8, z + d0, d20, d24);
            tessellator.addVertexWithUV(x + d6, y + d8, z + d18, d20, d26);

            tessellator.addVertexWithUV(x + d14, y + d16, z + d18, d22, d26);
            tessellator.addVertexWithUV(x + d14, y + d16, z + d0, d22, d24);
            tessellator.addVertexWithUV(x + d10, y + d12, z + d0, d20, d24);
            tessellator.addVertexWithUV(x + d10, y + d12, z + d18, d20, d26);

            tessellator.addVertexWithUV(x + d6, y + d8, z + d18, d22, d26);
            tessellator.addVertexWithUV(x + d6, y + d8, z + d0, d22, d24);
            tessellator.addVertexWithUV(x + d14, y + d16, z + d0, d20, d24);
            tessellator.addVertexWithUV(x + d14, y + d16, z + d18, d20, d26);

            tessellator.addVertexWithUV(x + d10, y + d12, z + d18, d22, d26);
            tessellator.addVertexWithUV(x + d10, y + d12, z + d0, d22, d24);
            tessellator.addVertexWithUV(x + d30, y + d4, z + d0, d20, d24);
            tessellator.addVertexWithUV(x + d30, y + d4, z + d18, d20, d26);
        }
        if (direction == 4) // North /** -Z */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            z = z + 0.5D;

            tessellator.addVertexWithUV(x + d7, y + d9, z - d23, d27, d29);
            tessellator.addVertexWithUV(x + d7, y + d9, z - d0, d27, d28);
            tessellator.addVertexWithUV(x + d11, y + d13, z - d0, d25, d28);
            tessellator.addVertexWithUV(x + d11, y + d13, z - d23, d25, d29);

            tessellator.addVertexWithUV(x + d19, y + d21, z - d23, d27, d29);
            tessellator.addVertexWithUV(x + d19, y + d21, z - d0, d27, d28);
            tessellator.addVertexWithUV(x + d15, y + d17, z - d0, d25, d28);
            tessellator.addVertexWithUV(x + d15, y + d17, z - d23, d25, d29);

            tessellator.addVertexWithUV(x + d11, y + d13, z - d23, d27, d29);
            tessellator.addVertexWithUV(x + d11, y + d13, z - d0, d27, d28);
            tessellator.addVertexWithUV(x + d19, y + d21, z - d0, d25, d28);
            tessellator.addVertexWithUV(x + d19, y + d21, z - d23, d25, d29);

            tessellator.addVertexWithUV(x + d15, y + d17, z - d23, d27, d29);
            tessellator.addVertexWithUV(x + d15, y + d17, z - d0, d27, d28);
            tessellator.addVertexWithUV(x + d7, y + d9, z - d0, d25, d28);
            tessellator.addVertexWithUV(x + d7, y + d9, z - d23, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d30, y + d4, z - d18, d22, d26);
            tessellator.addVertexWithUV(x + d30, y + d4, z - d0, d22, d24);
            tessellator.addVertexWithUV(x + d6, y + d8, z - d0, d20, d24);
            tessellator.addVertexWithUV(x + d6, y + d8, z - d18, d20, d26);

            tessellator.addVertexWithUV(x + d14, y + d16, z - d18, d22, d26);
            tessellator.addVertexWithUV(x + d14, y + d16, z - d0, d22, d24);
            tessellator.addVertexWithUV(x + d10, y + d12, z - d0, d20, d24);
            tessellator.addVertexWithUV(x + d10, y + d12, z - d18, d20, d26);

            tessellator.addVertexWithUV(x + d6, y + d8, z - d18, d22, d26);
            tessellator.addVertexWithUV(x + d6, y + d8, z - d0, d22, d24);
            tessellator.addVertexWithUV(x + d14, y + d16, z - d0, d20, d24);
            tessellator.addVertexWithUV(x + d14, y + d16, z - d18, d20, d26);

            tessellator.addVertexWithUV(x + d10, y + d12, z - d18, d22, d26);
            tessellator.addVertexWithUV(x + d10, y + d12, z - d0, d22, d24);
            tessellator.addVertexWithUV(x + d30, y + d4, z - d0, d20, d24);
            tessellator.addVertexWithUV(x + d30, y + d4, z - d18, d20, d26);
        }
        if (direction == 3) // West /** -X */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            x = x + 0.5D;

            tessellator.addVertexWithUV(x - d23, y + d7, z + d9, d27, d29);
            tessellator.addVertexWithUV(x - d0, y + d7, z + d9, d27, d28);
            tessellator.addVertexWithUV(x - d0, y + d11, z + d13, d25, d28);
            tessellator.addVertexWithUV(x - d23, y + d11, z + d13, d25, d29);

            tessellator.addVertexWithUV(x - d23, y + d19, z + d21, d27, d29);
            tessellator.addVertexWithUV(x - d0, y + d19, z + d21, d27, d28);
            tessellator.addVertexWithUV(x - d0, y + d15, z + d17, d25, d28);
            tessellator.addVertexWithUV(x - d23, y + d15, z + d17, d25, d29);

            tessellator.addVertexWithUV(x - d23, y + d11, z + d13, d27, d29);
            tessellator.addVertexWithUV(x - d0, y + d11, z + d13, d27, d28);
            tessellator.addVertexWithUV(x - d0, y + d19, z + d21, d25, d28);
            tessellator.addVertexWithUV(x - d23, y + d19, z + d21, d25, d29);

            tessellator.addVertexWithUV(x - d23, y + d15, z + d17, d27, d29);
            tessellator.addVertexWithUV(x - d0, y + d15, z + d17, d27, d28);
            tessellator.addVertexWithUV(x - d0, y + d7, z + d9, d25, d28);
            tessellator.addVertexWithUV(x - d23, y + d7, z + d9, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x - d18, y + d30, z + d4, d22, d26);
            tessellator.addVertexWithUV(x - d0, y + d30, z + d4, d22, d24);
            tessellator.addVertexWithUV(x - d0, y + d6, z + d8, d20, d24);
            tessellator.addVertexWithUV(x - d18, y + d6, z + d8, d20, d26);

            tessellator.addVertexWithUV(x - d18, y + d14, z + d16, d22, d26);
            tessellator.addVertexWithUV(x - d0, y + d14, z + d16, d22, d24);
            tessellator.addVertexWithUV(x - d0, y + d10, z + d12, d20, d24);
            tessellator.addVertexWithUV(x - d18, y + d10, z + d12, d20, d26);

            tessellator.addVertexWithUV(x - d18, y + d6, z + d8, d22, d26);
            tessellator.addVertexWithUV(x - d0, y + d6, z + d8, d22, d24);
            tessellator.addVertexWithUV(x - d0, y + d14, z + d16, d20, d24);
            tessellator.addVertexWithUV(x - d18, y + d14, z + d16, d20, d26);

            tessellator.addVertexWithUV(x - d18, y + d10, z + d12, d22, d26);
            tessellator.addVertexWithUV(x - d0, y + d10, z + d12, d22, d24);
            tessellator.addVertexWithUV(x - d0, y + d30, z + d4, d20, d24);
            tessellator.addVertexWithUV(x - d18, y + d30, z + d4, d20, d26);
        }
        if (direction == 5) // East /** +X */
        {
            d23 = (double) (distance * f1);
            d29 = (double) (distance * f1) * (0.5D / d5) + d28;
            d18 = (double) (distance * f1);
            d26 = (double) (distance * f1) + d24;
            x = x + 0.5D;

            tessellator.addVertexWithUV(x + d23, y + d7, z + d9, d27, d29);
            tessellator.addVertexWithUV(x + d0, y + d7, z + d9, d27, d28);
            tessellator.addVertexWithUV(x + d0, y + d11, z + d13, d25, d28);
            tessellator.addVertexWithUV(x + d23, y + d11, z + d13, d25, d29);

            tessellator.addVertexWithUV(x + d23, y + d19, z + d21, d27, d29);
            tessellator.addVertexWithUV(x + d0, y + d19, z + d21, d27, d28);
            tessellator.addVertexWithUV(x + d0, y + d15, z + d17, d25, d28);
            tessellator.addVertexWithUV(x + d23, y + d15, z + d17, d25, d29);

            tessellator.addVertexWithUV(x + d23, y + d11, z + d13, d27, d29);
            tessellator.addVertexWithUV(x + d0, y + d11, z + d13, d27, d28);
            tessellator.addVertexWithUV(x + d0, y + d19, z + d21, d25, d28);
            tessellator.addVertexWithUV(x + d23, y + d19, z + d21, d25, d29);

            tessellator.addVertexWithUV(x + d23, y + d15, z + d17, d27, d29);
            tessellator.addVertexWithUV(x + d0, y + d15, z + d17, d27, d28);
            tessellator.addVertexWithUV(x + d0, y + d7, z + d9, d25, d28);
            tessellator.addVertexWithUV(x + d23, y + d7, z + d9, d25, d29);

            tessellator.draw();

            GL11.glEnable(GL11.GL_BLEND);
            OpenGlHelper.glBlendFunc(770, 771, 1, 0);
            GL11.glDepthMask(false);

            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(rgb[0], rgb[1], rgb[2], 32);

            tessellator.addVertexWithUV(x + d18, y + d30, z + d4, d22, d26);
            tessellator.addVertexWithUV(x + d0, y + d30, z + d4, d22, d24);
            tessellator.addVertexWithUV(x + d0, y + d6, z + d8, d20, d24);
            tessellator.addVertexWithUV(x + d18, y + d6, z + d8, d20, d26);

            tessellator.addVertexWithUV(x + d18, y + d14, z + d16, d22, d26);
            tessellator.addVertexWithUV(x + d0, y + d14, z + d16, d22, d24);
            tessellator.addVertexWithUV(x + d0, y + d10, z + d12, d20, d24);
            tessellator.addVertexWithUV(x + d18, y + d10, z + d12, d20, d26);

            tessellator.addVertexWithUV(x + d18, y + d6, z + d8, d22, d26);
            tessellator.addVertexWithUV(x + d0, y + d6, z + d8, d22, d24);
            tessellator.addVertexWithUV(x + d0, y + d14, z + d16, d20, d24);
            tessellator.addVertexWithUV(x + d18, y + d14, z + d16, d20, d26);

            tessellator.addVertexWithUV(x + d18, y + d10, z + d12, d22, d26);
            tessellator.addVertexWithUV(x + d0, y + d10, z + d12, d22, d24);
            tessellator.addVertexWithUV(x + d0, y + d30, z + d4, d20, d24);
            tessellator.addVertexWithUV(x + d18, y + d30, z + d4, d20, d26);
        }
        tessellator.draw();

        GL11.glEnable(GL11.GL_LIGHTING);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glDepthMask(true);
    }
    GL11.glAlphaFunc(GL11.GL_GREATER, 0.5F);
}

From source file:fr.mcnanotech.kevin_68.nanotechmod.city.client.renderer.tileentity.TileEntityFountainRender.java

License:Creative Commons License

public void renderTileEntitySpotLightAt(TileEntityFountain tileentity, double x, double y, double z,
        float par8) {
    float f1 = tileentity.func_82125_v_();

    if (f1 > 0.0F) {
        Tessellator tessellator = Tessellator.instance;
        this.bindTexture(texture);
        GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F);
        GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F);
        GL11.glDisable(GL11.GL_LIGHTING);
        GL11.glDisable(GL11.GL_CULL_FACE);
        GL11.glDisable(GL11.GL_BLEND);// w w w  .  j av a2 s.c o  m
        GL11.glDepthMask(true);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        tessellator.setColorRGBA(255, 255, 255, 32);
        float f2 = (float) (tileentity.getWorldObj().getTotalWorldTime() / 2) + par8;
        float f22;
        if (tileentity.rotate) {
            f22 = ((f2 - par8) * 2) + par8;
        } else {
            f22 = 1.0F;
        }
        float f3 = -f2 * 0.2F - (float) MathHelper.floor_float(-f2 * 0.1F);
        byte b0 = 1;
        double d3 = (double) f22 * 0.025D * (1.0D - (double) (b0 & 1) * 2.5D);
        tessellator.startDrawingQuads();
        double d4 = (double) b0 * tileentity.getWidth();
        double d5 = 0.5D + Math.cos(d3 + 2.356194490192345D) * d4;
        double d6 = 0.5D + Math.sin(d3 + 2.356194490192345D) * d4;
        double d7 = 0.5D + Math.cos(d3 + (Math.PI / 4D)) * d4;
        double d8 = 0.5D + Math.sin(d3 + (Math.PI / 4D)) * d4;
        double d9 = 0.5D + Math.cos(d3 + 3.9269908169872414D) * d4;
        double d10 = 0.5D + Math.sin(d3 + 3.9269908169872414D) * d4;
        double d11 = 0.5D + Math.cos(d3 + 5.497787143782138D) * d4;
        double d12 = 0.5D + Math.sin(d3 + 5.497787143782138D) * d4;
        double d13;

        d13 = (double) (tileentity.f * f1);

        double d14 = 0.0D;
        double d15 = 1.0D;
        double d16 = (double) (-1.0F + f3);
        double d17 = (double) (tileentity.f * f1) * (0.5D / d4) + d16;
        tessellator.addVertexWithUV(x + d7, y, z + d8, d14, d16);
        tessellator.addVertexWithUV(x + d7, y + d13, z + d8, d14, d17);
        tessellator.addVertexWithUV(x + d9, y, z + d10, d14, d16);
        tessellator.addVertexWithUV(x + d9, y + d13, z + d10, d14, d17);
        tessellator.addVertexWithUV(x + d7, y + d13, z + d8, d15, d17);
        tessellator.addVertexWithUV(x + d7, y, z + d8, d15, d16);
        tessellator.addVertexWithUV(x + d9, y + d13, z + d10, d15, d17);
        tessellator.addVertexWithUV(x + d9, y, z + d10, d15, d16);

        tessellator.addVertexWithUV(x + d5, y + d13, z + d6, d15, d17);
        tessellator.addVertexWithUV(x + d5, y, z + d6, d15, d16);
        tessellator.addVertexWithUV(x + d11, y + d13, z + d12, d15, d17);
        tessellator.addVertexWithUV(x + d11, y, z + d12, d15, d16);
        tessellator.addVertexWithUV(x + d11, y, z + d12, d14, d16);
        tessellator.addVertexWithUV(x + d11, y + d13, z + d12, d14, d17);
        tessellator.addVertexWithUV(x + d5, y, z + d6, d14, d16);
        tessellator.addVertexWithUV(x + d5, y + d13, z + d6, d14, d17);
        tessellator.draw();
        GL11.glEnable(GL11.GL_LIGHTING);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glDepthMask(true);
    }
}

From source file:fr.mcnanotech.kevin_68.nanotechmod.city.client.renderer.tileentity.TileEntitySpotLightRender.java

License:Creative Commons License

public void renderTileEntitySpotLightAt(TileEntitySpotLight tileentity, double x, double y, double z,
        float tick) {
    float f1 = tileentity.isActive();
    GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);
    if (f1 > 0.0F) {
        Tessellator tessellator = Tessellator.instance;
        this.bindTexture(texture);
        GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F);
        GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F);
        GL11.glDisable(GL11.GL_LIGHTING);
        GL11.glDisable(GL11.GL_CULL_FACE);
        GL11.glDisable(GL11.GL_BLEND);/*from w  w w.ja v  a 2s.  com*/
        GL11.glDepthMask(true);
        OpenGlHelper.glBlendFunc(770, 1, 1, 0);
        tessellator.startDrawingQuads();
        tessellator.setColorRGBA(tileentity.get(TileEntitySpotLight.RED),
                tileentity.get(TileEntitySpotLight.GREEN), tileentity.get(TileEntitySpotLight.BLUE), 32);
        float f2 = (float) tileentity.getWorldObj().getTotalWorldTime() + tick;
        float f3 = -f2 * 0.2F - (float) MathHelper.floor_float(-f2 * 0.1F);
        byte b0 = 1;
        double d4 = (double) b0 * 0.2D;// taille
        double d3 = (double) f2 * 0.025D * (1.0D - (double) (b0 & 1) * 2.5D);

        double angle1Deg = tileentity.get(TileEntitySpotLight.ANGLE1);
        double angle2Deg = tileentity.get(TileEntitySpotLight.ANGLE2);
        double a1 = Math.toRadians(angle1Deg);
        double a2 = tileentity.get(TileEntitySpotLight.AUTOROTATE) == 0
                ? ((d3 * (tileentity.get(TileEntitySpotLight.ROTATIONSPEED) / 10))
                        * (tileentity.get(TileEntitySpotLight.REVERSEROTATION) == 0 ? -1 : 1))
                : Math.toRadians(angle2Deg);

        double xo = 0.5D;
        double yo = 0.5D;
        double zo = 0.5D;
        double xm = xo + (256 * Math.cos(a2) * Math.sin(a1));
        double ym = yo + (256 * Math.cos(a1));
        double zm = zo + (256 * Math.sin(a2) * Math.sin(a1));

        double xa = xo + (0.2D * Math.cos(a2 + (Math.PI / 4D)) * Math.sin(a1 + (Math.PI / 4D)));
        double ya = xo + (0.2D * Math.cos(a1 + (Math.PI / 4D)));
        double za = zo + (0.2D * Math.sin(a2 + (Math.PI / 4D)) * Math.sin(a1 + (Math.PI / 4D)));

        double xA = xa + xm - xo;
        double yA = ya + ym - yo;
        double zA = za + zm - zo;

        double xb = xo + (0.2D * Math.cos(a2 + (3 * Math.PI / 4D)) * Math.sin(a1 + (3 * Math.PI / 4D)));
        double yb = xo + (0.2D * Math.cos(a1 + (3 * Math.PI / 4D)));
        double zb = zo + (0.2D * Math.sin(a2 + (3 * Math.PI / 4D)) * Math.sin(a1 + (3 * Math.PI / 4D)));

        double xB = xb + xm - xo;
        double yB = yb + ym - yo;
        double zB = zb + zm - zo;

        double xc = xo + (0.2D * Math.cos(a2 + (3 * Math.PI / 4D)) * Math.sin(a1 + (5 * Math.PI / 4D)));
        double yc = xo + (0.2D * Math.cos(a1 + (5 * Math.PI / 4D)));
        double zc = zo + (0.2D * Math.sin(a2 + (3 * Math.PI / 4D)) * Math.sin(a1 + (5 * Math.PI / 4D)));

        double xC = xc + xm - xo;
        double yC = yc + ym - yo;
        double zC = zc + zm - zo;

        double xd = xo + (0.2D * Math.cos(a2 + (Math.PI / 4D)) * Math.sin(a1 + (7 * Math.PI / 4D)));
        double yd = xo + (0.2D * Math.cos(a1 + (7 * Math.PI / 4D)));
        double zd = zo + (0.2D * Math.sin(a2 + (Math.PI / 4D)) * Math.sin(a1 + (7 * Math.PI / 4D)));

        double xD = xd + xm - xo;
        double yD = yd + ym - yo;
        double zD = zd + zm - zo;

        double t0 = 0.0D;
        double t1 = 1.0D;
        double t2 = (double) (-1.0F + f3);
        double t3 = (double) (256.0F * f1) * (0.5D / d4) + t2;

        tessellator.addVertexWithUV(x + xa, y + ya, z + za, t1, t3);
        tessellator.addVertexWithUV(x + xA, y + yA, z + zA, t1, t2);
        tessellator.addVertexWithUV(x + xB, y + yB, z + zB, t0, t2);
        tessellator.addVertexWithUV(x + xb, y + yb, z + zb, t0, t3);

        tessellator.addVertexWithUV(x + xa, y + ya, z + za, t1, t3);
        tessellator.addVertexWithUV(x + xA, y + yA, z + zA, t1, t2);
        tessellator.addVertexWithUV(x + xC, y + yC, z + zC, t0, t2);
        tessellator.addVertexWithUV(x + xc, y + yc, z + zc, t0, t3);

        tessellator.addVertexWithUV(x + xc, y + yc, z + zc, t1, t3);
        tessellator.addVertexWithUV(x + xC, y + yC, z + zC, t1, t2);
        tessellator.addVertexWithUV(x + xD, y + yD, z + zD, t0, t2);
        tessellator.addVertexWithUV(x + xd, y + yd, z + zd, t0, t3);

        tessellator.addVertexWithUV(x + xb, y + yb, z + zb, t1, t3);
        tessellator.addVertexWithUV(x + xB, y + yB, z + zB, t1, t2);
        tessellator.addVertexWithUV(x + xD, y + yD, z + zD, t0, t2);
        tessellator.addVertexWithUV(x + xd, y + yd, z + zd, t0, t3);

        tessellator.addVertexWithUV(x + xb, y + yb, z + zb, t1, t3);
        tessellator.addVertexWithUV(x + xB, y + yB, z + zB, t1, t2);
        tessellator.addVertexWithUV(x + xC, y + yC, z + zC, t0, t2);
        tessellator.addVertexWithUV(x + xc, y + yc, z + zc, t0, t3);

        tessellator.addVertexWithUV(x + xa, y + ya, z + za, t1, t3);
        tessellator.addVertexWithUV(x + xA, y + yA, z + zA, t1, t2);
        tessellator.addVertexWithUV(x + xD, y + yD, z + zD, t0, t2);
        tessellator.addVertexWithUV(x + xd, y + yd, z + zd, t0, t3);
        tessellator.draw();

        GL11.glEnable(GL11.GL_BLEND);
        OpenGlHelper.glBlendFunc(770, 771, 1, 0);
        GL11.glDepthMask(false);

        double xe = xo + (0.5D * Math.cos(a2 + (Math.PI / 4D)) * Math.sin(a1 + (Math.PI / 4D)));
        double ye = xo + (0.5D * Math.cos(a1 + (Math.PI / 4D)));
        double ze = zo + (0.5D * Math.sin(a2 + (Math.PI / 4D)) * Math.sin(a1 + (Math.PI / 4D)));

        double xE = xe + xm - xo;
        double yE = ye + ym - yo;
        double zE = ze + zm - zo;

        double xf = xo + (0.5D * Math.cos(a2 + (3 * Math.PI / 4D)) * Math.sin(a1 + (3 * Math.PI / 4D)));
        double yf = xo + (0.5D * Math.cos(a1 + (3 * Math.PI / 4D)));
        double zf = zo + (0.5D * Math.sin(a2 + (3 * Math.PI / 4D)) * Math.sin(a1 + (3 * Math.PI / 4D)));

        double xF = xf + xm - xo;
        double yF = yf + ym - yo;
        double zF = zf + zm - zo;

        double xg = xo + (0.5D * Math.cos(a2 + (3 * Math.PI / 4D)) * Math.sin(a1 + (5 * Math.PI / 4D)));
        double yg = xo + (0.5D * Math.cos(a1 + (5 * Math.PI / 4D)));
        double zg = zo + (0.5D * Math.sin(a2 + (3 * Math.PI / 4D)) * Math.sin(a1 + (5 * Math.PI / 4D)));

        double xG = xg + xm - xo;
        double yG = yg + ym - yo;
        double zG = zg + zm - zo;

        double xh = xo + (0.5D * Math.cos(a2 + (Math.PI / 4D)) * Math.sin(a1 + (7 * Math.PI / 4D)));
        double yh = xo + (0.5D * Math.cos(a1 + (7 * Math.PI / 4D)));
        double zh = zo + (0.5D * Math.sin(a2 + (Math.PI / 4D)) * Math.sin(a1 + (7 * Math.PI / 4D)));

        double xH = xh + xm - xo;
        double yH = yh + ym - yo;
        double zH = zh + zm - zo;

        if (tileentity.get(TileEntitySpotLight.SECONDARYLAZER) == 0) {
            tessellator.startDrawingQuads();
            tessellator.setColorRGBA(tileentity.get(TileEntitySpotLight.DARKRED),
                    tileentity.get(TileEntitySpotLight.DARKGREEN), tileentity.get(TileEntitySpotLight.DARKBLUE),
                    32);

            tessellator.addVertexWithUV(x + xe, y + ye, z + ze, t1, t3);
            tessellator.addVertexWithUV(x + xE, y + yE, z + zE, t1, t2);
            tessellator.addVertexWithUV(x + xF, y + yF, z + zF, t0, t2);
            tessellator.addVertexWithUV(x + xf, y + yf, z + zf, t0, t3);

            tessellator.addVertexWithUV(x + xe, y + ye, z + ze, t1, t3);
            tessellator.addVertexWithUV(x + xE, y + yE, z + zE, t1, t2);
            tessellator.addVertexWithUV(x + xG, y + yG, z + zG, t0, t2);
            tessellator.addVertexWithUV(x + xg, y + yg, z + zg, t0, t3);

            tessellator.addVertexWithUV(x + xg, y + yg, z + zg, t1, t3);
            tessellator.addVertexWithUV(x + xG, y + yG, z + zG, t1, t2);
            tessellator.addVertexWithUV(x + xH, y + yH, z + zH, t0, t2);
            tessellator.addVertexWithUV(x + xh, y + yh, z + zh, t0, t3);

            tessellator.addVertexWithUV(x + xf, y + yf, z + zf, t1, t3);
            tessellator.addVertexWithUV(x + xF, y + yF, z + zF, t1, t2);
            tessellator.addVertexWithUV(x + xH, y + yH, z + zH, t0, t2);
            tessellator.addVertexWithUV(x + xh, y + yh, z + zh, t0, t3);

            tessellator.addVertexWithUV(x + xf, y + yf, z + zf, t1, t3);
            tessellator.addVertexWithUV(x + xF, y + yF, z + zF, t1, t2);
            tessellator.addVertexWithUV(x + xG, y + yG, z + zG, t0, t2);
            tessellator.addVertexWithUV(x + xg, y + yg, z + zg, t0, t3);

            tessellator.addVertexWithUV(x + xe, y + ya, z + za, t1, t3);
            tessellator.addVertexWithUV(x + xE, y + yE, z + zE, t1, t2);
            tessellator.addVertexWithUV(x + xD, y + yD, z + zD, t0, t2);
            tessellator.addVertexWithUV(x + xd, y + yd, z + zd, t0, t3);
            tessellator.draw();
        }

        GL11.glEnable(GL11.GL_LIGHTING);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glDepthMask(true);
    }
    GL11.glAlphaFunc(GL11.GL_GREATER, 0.5F);
}

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

License:Apache License

public static void glTexParameterf(int target, int pname, float param) {
    GL11.glTexParameterf(target, pname, param);
}

From source file:ion2d.INTexture2D.java

License:Open Source License

/**
 * Can only generate mipmap with opengl 1.4 or greater
 *///from   ww  w. j a  v  a2s .  c  om
public void glGenerateMipMap() {
    this.bind();
    GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_GENERATE_MIPMAP, GL11.GL_TRUE);
}

From source file:ivengine.Util.java

License:Creative Commons License

/**
 * Stores a variable amount of textures defined by URLS <filenames> into a texture array. Uses a magfilter <magfilter>, a minfilter <minfilter>.
 * If <mipmap> is true, mipmaps will be activated.
 * If <anisotropic> is true, anisotropic filtering will be activated, if supported.
 *///from   www  .  j  a  va2 s .  co  m
public static int loadTextureAtlasIntoTextureArray(URL[] filenames, int magfilter, int minfilter,
        boolean mipmap, boolean anisotropic) {
    int tex = GL11.glGenTextures();
    GL11.glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, tex);
    GL11.glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL11.GL_TEXTURE_MAG_FILTER, magfilter);
    GL11.glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL11.GL_TEXTURE_MIN_FILTER, minfilter);
    GL11.glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
    GL11.glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);

    ByteBuffer buf = null;
    PNGDecoder decoder = null;
    try {
        InputStream in = filenames[0].openStream();
        decoder = new PNGDecoder(in);

        buf = BufferUtils.createByteBuffer(4 * decoder.getWidth() * decoder.getHeight());

        decoder.decode(buf, decoder.getWidth() * 4, Format.RGBA);
        buf.flip();

        in.close();
    } catch (IOException e) {
        e.printStackTrace();
        System.exit(-1);
    }

    int tileWidth = decoder.getWidth();
    System.out.println(tileWidth);
    int tileHeight = decoder.getHeight();
    System.out.println(tileHeight);

    GL12.glTexImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, GL11.GL_RGBA, tileWidth, tileHeight, filenames.length, 0,
            GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, (ByteBuffer) null);

    for (int i = 0; i < filenames.length; i++) {
        GL12.glTexSubImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, /*tileWidth*x*/0, /*tileHeight*y*/0, i, tileWidth,
                tileHeight, 1, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buf);

        buf.rewind();
        if (i < filenames.length - 1)
            loadTexture(filenames[i + 1], buf);
    }
    if (mipmap)
        GL30.glGenerateMipmap(GL30.GL_TEXTURE_2D_ARRAY);
    if (anisotropic) {
        if (GLContext.getCapabilities().GL_EXT_texture_filter_anisotropic) {
            float maxanis = GL11.glGetFloat(EXTTextureFilterAnisotropic.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT);
            System.out.println("Anisotropic filtering activated with a resolution of " + maxanis);
            System.out.println(GL11.glGetError());
            GL11.glTexParameterf(GL30.GL_TEXTURE_2D_ARRAY,
                    EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT, maxanis);
            System.out.println(GL11.glGetError());
        } else {
            System.err.println(
                    "WARNING - Anisotropic filtering not supported by this graphics card. Setting it as disabled");
        }
    }
    GL11.glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, 0);

    return tex;
}

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

License:Open Source License

@Override
public void setTextureAnisotropy(float value) {
    GL11.glTexParameterf(GL11.GL_TEXTURE_2D, EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT, value);
}

From source file:kuake2.render.lwjgl.Draw.java

License:Open Source License

void Draw_InitLocal() {
    // load console characters (don't bilerp characters)
    draw_chars = GL_FindImage("pics/conchars.pcx", it_pic);
    GL_Bind(draw_chars.texnum);//  w  ww.  ja v  a2 s . c  om
    GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
    GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
}

From source file:kuake2.render.lwjgl.Draw.java

License:Open Source License

protected void Draw_StretchRaw(int x, int y, int w, int h, int cols, int rows, byte[] data) {
    int i, j, trows;
    int sourceIndex;
    int frac, fracstep;
    float hscale;
    int row;//w w w .j ava 2s  .co  m
    float t;

    GL_Bind(0);

    if (rows <= 256) {
        hscale = 1;
        trows = rows;
    } else {
        hscale = rows / 256.0f;
        trows = 256;
    }
    t = rows * hscale / 256;

    if (!qglColorTableEXT) {
        //int[] image32 = new int[256*256];
        image32.clear();
        int destIndex = 0;

        for (i = 0; i < trows; i++) {
            row = (int) (i * hscale);
            if (row > rows)
                break;
            sourceIndex = cols * row;
            destIndex = i * 256;
            fracstep = cols * 0x10000 / 256;
            frac = fracstep >> 1;
            for (j = 0; j < 256; j++) {
                image32.put(destIndex + j, r_rawpalette[data[sourceIndex + (frac >> 16)] & 0xff]);
                frac += fracstep;
            }
        }
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, gl_tex_solid_format, 256, 256, 0, GL11.GL_RGBA,
                GL11.GL_UNSIGNED_BYTE, image32);
    } else {
        //byte[] image8 = new byte[256*256];
        image8.clear();
        int destIndex = 0;
        ;

        for (i = 0; i < trows; i++) {
            row = (int) (i * hscale);
            if (row > rows)
                break;
            sourceIndex = cols * row;
            destIndex = i * 256;
            fracstep = cols * 0x10000 / 256;
            frac = fracstep >> 1;
            for (j = 0; j < 256; j++) {
                image8.put(destIndex + j, data[sourceIndex + (frac >> 16)]);
                frac += fracstep;
            }
        }

        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, 256, 256, 0, GL11.GL_COLOR_INDEX,
                GL11.GL_UNSIGNED_BYTE, image8);
    }
    GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
    GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);

    if ((gl_config.renderer == GL_RENDERER_MCD) || ((gl_config.renderer & GL_RENDERER_RENDITION) != 0))
        GL11.glDisable(GL11.GL_ALPHA_TEST);

    GL11.glBegin(GL11.GL_QUADS);
    GL11.glTexCoord2f(0, 0);
    GL11.glVertex2f(x, y);
    GL11.glTexCoord2f(1, 0);
    GL11.glVertex2f(x + w, y);
    GL11.glTexCoord2f(1, t);
    GL11.glVertex2f(x + w, y + h);
    GL11.glTexCoord2f(0, t);
    GL11.glVertex2f(x, y + h);
    GL11.glEnd();

    if ((gl_config.renderer == GL_RENDERER_MCD) || ((gl_config.renderer & GL_RENDERER_RENDITION) != 0))
        GL11.glEnable(GL11.GL_ALPHA_TEST);
}