Example usage for org.lwjgl.opengl GL13 glActiveTexture

List of usage examples for org.lwjgl.opengl GL13 glActiveTexture

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL13 glActiveTexture.

Prototype

public static void glActiveTexture(@NativeType("GLenum") int texture) 

Source Link

Document

Selects which texture unit subsequent texture state calls will affect.

Usage

From source file:de.ikosa.mars.viewer.glviewer.engine.GLTextureBuilder.java

License:Open Source License

public static GLTexture createEmptyTexture(String name, int width, int height, byte r, byte g, byte b, byte a) {
    try {//w  w w.  ja v  a 2  s .  co m
        int textureId = GL11.glGenTextures();

        ByteBuffer buffer = ByteBuffer.allocateDirect(width * height * 4);

        for (int i = 0; i < width * height; i++) {
            buffer.put(r);
            buffer.put(g);
            buffer.put(b);
            buffer.put(a);
        }
        buffer.flip();

        GL13.glActiveTexture(GL13.GL_TEXTURE0);
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureId);
        GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1);
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA,
                GL11.GL_UNSIGNED_BYTE, buffer);
        GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);

        GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);

        return new GLTexture(name, textureId);
    } catch (Exception e) {
        ML.f(e);
    }
    return null;
}

From source file:de.ikosa.mars.viewer.glviewer.engine.GLTextureBuilder.java

License:Open Source License

public static GLTexture createEmptyTexture(String name, int width, int height, float initial) {
    try {/*from ww w. j ava  2 s .com*/
        int textureId = GL11.glGenTextures();

        ByteBuffer buffer = ByteBuffer.allocateDirect(width * height * 4);

        for (int i = 0; i < width * height * 4; i++) {
            buffer.put((byte) 0);
        }
        buffer.flip();

        GL13.glActiveTexture(GL13.GL_TEXTURE0);
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureId);
        GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1);
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_DEPTH_COMPONENT, width, height, 0,
                GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT, buffer);
        GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);

        GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);

        return new GLTexture(name, textureId);
    } catch (Exception e) {
        ML.f(e);
    }
    return null;
}

From source file:de.ikosa.mars.viewer.glviewer.engine.GLTextureBuilder.java

License:Open Source License

private int createRGBTexture(BufferedImage image, byte[] x) {
    ByteBuffer buffer;/*from  ww  w.  j  a  va 2  s  .  c om*/

    buffer = ByteBuffer.allocateDirect(x.length);
    for (int i = 0; i < x.length; i++) {
        buffer.put(x[i]);
    }

    buffer.flip();

    int textureId = GL11.glGenTextures();
    GLRenderer2Stage.errorCheck("generating texture id");

    GL13.glActiveTexture(GL13.GL_TEXTURE0);
    GLRenderer2Stage.errorCheck("activating texture image unit");

    GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureId);
    GLRenderer2Stage.errorCheck("binding 2d texture");

    GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1);
    GLRenderer2Stage.errorCheck("setting unpack aligment");

    GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, image.getWidth(), image.getHeight(), 0, GL11.GL_RGBA,
            GL11.GL_UNSIGNED_BYTE, buffer);
    GLRenderer2Stage.errorCheck("storing 2d texture data");

    GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
    GLRenderer2Stage.errorCheck("generating 2d texture array mipmaps");

    GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
    GLRenderer2Stage.errorCheck("unbinding 2d texture array");
    return textureId;
}

From source file:de.ikosa.mars.viewer.glviewer.engine.GLTextureBuilder.java

License:Open Source License

private int createGrayscaleTexture(BufferedImage image, byte[] x) {
    ShortBuffer buffer;/* w w w. j  a  v  a2s . co  m*/

    buffer = BufferUtils.createShortBuffer(image.getHeight() * image.getWidth());
    for (int i = 0; i < x.length; i += 2) {
        short val = (short) (fromByte(x[i]) + (fromByte(x[i + 1]) << 8));
        buffer.put(val);
    }

    buffer.flip();

    int textureId = GL11.glGenTextures();
    GLRenderer2Stage.errorCheck("generating texture id");

    GL13.glActiveTexture(GL13.GL_TEXTURE0);
    GLRenderer2Stage.errorCheck("activating texture image unit");

    GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureId);
    GLRenderer2Stage.errorCheck("binding 2d texture");

    GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 2);
    GLRenderer2Stage.errorCheck("setting unpack aligment");

    GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL30.GL_R16, image.getWidth(), image.getHeight(), 0, GL11.GL_RED,
            GL11.GL_UNSIGNED_SHORT, buffer);
    GLRenderer2Stage.errorCheck("storing 2d texture data");

    GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D);
    GLRenderer2Stage.errorCheck("generating 2d texture array mipmaps");

    GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
    GLRenderer2Stage.errorCheck("unbinding 2d texture array");
    return textureId;
}

From source file:engine.render.TexturedQuad.java

public void renderQuad() {

    int shaderID = shader.getProgramID();
    GL20.glUseProgram(shaderID);/*from   w  w  w  . j  av a  2  s.  c  o  m*/
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    GL13.glActiveTexture(GL13.GL_TEXTURE0);
    GL11.glBindTexture(GL11.GL_TEXTURE_2D, tex.getTextureID());

    GL30.glBindVertexArray(vaoId);
    GL20.glEnableVertexAttribArray(0);
    GL20.glEnableVertexAttribArray(1);
    GL20.glEnableVertexAttribArray(2);

    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboiId);
    glUniform2f(glGetUniformLocation(shaderID, "scale"), scale.x, scale.y);
    glUniform2f(glGetUniformLocation(shaderID, "translation"), translation.x, translation.y);
    glUniform2f(glGetUniformLocation(shaderID, "cameraOffset"), cameraOffset.x, cameraOffset.y);
    glUniform1f(glGetUniformLocation(shaderID, "rotation"), rotation);
    glUniform2f(glGetUniformLocation(shaderID, "resolution"), resolution.x, resolution.y);

    GL11.glDrawElements(GL11.GL_TRIANGLES, indicesCount, GL11.GL_UNSIGNED_BYTE, 0);

    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    GL20.glDisableVertexAttribArray(0);
    GL20.glDisableVertexAttribArray(1);
    GL20.glDisableVertexAttribArray(2);
    GL30.glBindVertexArray(0);
    glDisable(GL_BLEND);
    GL20.glUseProgram(0);
}

From source file:eu.over9000.veya.rendering.Scene.java

License:Open Source License

public void render() {
    this.checkCameraPosition();

    ChunkChunkVAOPair addEntry;//  www .  j  a v a 2s.c o  m
    while ((addEntry = this.toAdd.poll()) != null) {
        addEntry.getChunkVAO().create();
        this.displayedChunks.put(addEntry.getChunk(), addEntry.getChunkVAO());
    }

    ChunkChunkVAOPair removeEntry;
    while ((removeEntry = this.toRemove.poll()) != null) {
        this.displayedChunks.remove(removeEntry.getChunk());
        removeEntry.getChunkVAO().dispose();
    }

    ChunkChunkVAOPair updatedEntry;
    while ((updatedEntry = this.updatedUpdateOffRender.poll()) != null) {
        updatedEntry.getChunkVAO().create();
        final ChunkVAO oldVAO = this.displayedChunks.put(updatedEntry.getChunk(), updatedEntry.getChunkVAO());
        if (oldVAO != null) {
            oldVAO.dispose();
        }
    }

    int updates = 0;
    for (final Chunk chunk : displayedChunks.keySet()) {
        if (world.hasChunkChanged(chunk)) {
            if (chunk.getLocation().nextTo(centerChunk)) {

                final ChunkVAO newVAO = new ChunkVAO(chunk);
                final ChunkVAO oldVAO = this.displayedChunks.put(chunk, newVAO);
                oldVAO.dispose();
                newVAO.create();
                chunkUpdateCounterInRender.incrementAndGet();
                updates++;
                if (updates > MAX_CHUNK_UPDATES_PER_FRAME) {
                    break;
                }
            } else {
                toUpdateOffRender.add(chunk);
            }
        }
    }

    shadow.preRender();
    Util.checkGLError();
    internalRender(false);
    Util.checkGLError();
    shadow.postRender();
    Util.checkGLError();

    GL13.glActiveTexture(GL13.GL_TEXTURE0);
    GL11.glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, this.texture_handle);
    internalRender(true);

    if (Veya.debugShadow) {
        Veya.program_debug.use(true);
        GL20.glUniform1f(Veya.program_debug.getUniformLocation("near_plane"), Shadow.SHADOW_NEAR);
        GL20.glUniform1f(Veya.program_debug.getUniformLocation("far_plane"), Shadow.SHADOW_FAR);
        GL13.glActiveTexture(GL13.GL_TEXTURE0);
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, shadow.getDepthMap());

        shadow.renderQuad();

    }

    Veya.program_normal.use(true);
}

From source file:eu.over9000.veya.rendering.Shadow.java

License:Open Source License

public void postRender() {
    GL11.glCullFace(GL11.GL_BACK); // don't forget to reset original culling face
    GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, 0);
    Veya.program_normal.use(true);/*from   w  w  w. j  a v a 2s. c  o m*/
    GL11.glViewport(0, 0, Display.getWidth(), Display.getHeight());

    GL13.glActiveTexture(GL13.GL_TEXTURE1);
    GL11.glBindTexture(GL11.GL_TEXTURE_2D, depthMap);
}

From source file:eu.over9000.veya.util.TextureLoader.java

License:Open Source License

public static int loadFontTexture(final int textureUnit) {

    final int texId = GL11.glGenTextures();

    try {/*from w  w  w. ja v  a2s  . co  m*/
        final InputStream in = TextureLoader.class.getResourceAsStream("/textures/font.png");
        final PNGDecoder decoder = new PNGDecoder(in);

        final int sourceTexWidth = decoder.getWidth();
        final int sourceTexHeight = decoder.getHeight();

        final ByteBuffer byteBuffer = ByteBuffer.allocateDirect(4 * decoder.getWidth() * decoder.getHeight());
        decoder.decode(byteBuffer, decoder.getWidth() * 4, Format.RGBA);
        byteBuffer.flip();

        GL13.glActiveTexture(textureUnit);
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, texId);
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, sourceTexWidth, sourceTexHeight, 0, GL11.GL_RGBA,
                GL11.GL_UNSIGNED_BYTE, byteBuffer);

        // Setup the ST coordinate system
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE);

        // Setup what to do when the texture has to be scaled
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
        GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);

        org.lwjgl.opengl.Util.checkGLError();

        GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);

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

    return texId;
}

From source file:eu.over9000.veya.util.TextureLoader.java

License:Open Source License

public static int loadBlockTexture(final int textureUnit) {

    final InputStream in = TextureLoader.class.getResourceAsStream("/textures/blocks.png");
    ByteBuffer convertedBuffer = null;
    int sourceTexWidth = 0;
    int sourceTexHeight = 0;
    int texCount = 0;

    try {//from w  ww  .  j  a v a  2 s.c  o m
        // Link the PNG decoder to this stream
        final PNGDecoder decoder = new PNGDecoder(in);

        // Get the width and height of the texture
        sourceTexWidth = decoder.getWidth();
        sourceTexHeight = decoder.getHeight();

        texCount = sourceTexWidth / TextureLoader.TEXTURE_WIDTH
                * (sourceTexHeight / TextureLoader.TEXTURE_WIDTH);

        // Decode the PNG file in a ByteBuffer
        final ByteBuffer buf = ByteBuffer.allocateDirect(4 * decoder.getWidth() * decoder.getHeight());
        decoder.decode(buf, decoder.getWidth() * 4, Format.RGBA);
        buf.flip();

        convertedBuffer = TextureLoader.convertBuffer(buf, sourceTexWidth, sourceTexHeight);

        in.close();

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

    // Create a new texture object in memory and bind it
    final int texId = GL11.glGenTextures();
    GL13.glActiveTexture(textureUnit);
    GL11.glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, texId);

    // All RGB bytes are aligned to each other and each component is 1 byte
    GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1);

    // Upload the texture model and generate mip maps (for scaling)
    // GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, tWidth, tHeight, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buf);
    GL12.glTexImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, GL11.GL_RGBA, TextureLoader.TEXTURE_WIDTH,
            TextureLoader.TEXTURE_HEIGHT, texCount, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, convertedBuffer);
    GL30.glGenerateMipmap(GL30.GL_TEXTURE_2D_ARRAY);

    // Setup the ST coordinate system
    GL11.glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL11.GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE);
    GL11.glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL11.GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE);

    // Setup what to do when the texture has to be scaled
    GL11.glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
    GL11.glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST_MIPMAP_LINEAR);

    org.lwjgl.opengl.Util.checkGLError();

    System.out
            .println("loading block texture, id=" + texId + ", w=" + sourceTexWidth + ", h=" + sourceTexHeight);

    GL11.glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, 0);

    return texId;
}

From source file:flash.display.ShaderInput.java

License:Open Source License

public void JITB$applyInput(final int programId) {
    if (null != input() && InputType.NONE.equals(_inputType)) {
        return;/*from  ww  w  . j a v  a 2  s. co  m*/
    }

    final int textureLocation = ARBShaderObjects.glGetUniformLocationARB(programId, "tex" + index());
    ARBShaderObjects.glUniform1iARB(textureLocation, index());

    switch (_inputType) {
    case BITMAPDATA:
        GL13.glActiveTexture(GL13.GL_TEXTURE0 + index());
        glBindTexture(TextureUtil.mode(), ((BitmapData) input()).JITB$textureId());
        break;

    default:
        //
        // System.out.println("Warning: Unhandled input type "+_inputType+".");
        //
    }
}