Example usage for org.lwjgl.opengl GL20 glLinkProgram

List of usage examples for org.lwjgl.opengl GL20 glLinkProgram

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL20 glLinkProgram.

Prototype

public static void glLinkProgram(@NativeType("GLuint") int program) 

Source Link

Document

Links a program object.

Usage

From source file:ar.com.quark.backend.lwjgl.opengl.DesktopGLES20.java

License:Apache License

/**
 * {@inheritDoc}
 */
@Override
public void glLinkProgram(int name) {
    GL20.glLinkProgram(name);
}

From source file:br.com.perin.shaders.ShaderProgram.java

public ShaderProgram(String vertexFile, String fragmentFile) {
    vertexShaderId = loadShader(vertexFile, GL20.GL_VERTEX_SHADER);
    fragmentShaderId = loadShader(fragmentFile, GL20.GL_FRAGMENT_SHADER);
    programId = GL20.glCreateProgram();/*from  www.ja  v  a  2  s.  co  m*/
    GL20.glAttachShader(programId, vertexShaderId);
    GL20.glAttachShader(programId, fragmentShaderId);
    bindAttributes();
    GL20.glLinkProgram(programId);
    GL20.glValidateProgram(programId);
}

From source file:com.adavr.player.globjects.Program.java

License:Open Source License

public void link(boolean validate) {
    GL20.glLinkProgram(id);
    if (validate) {
        GL20.glValidateProgram(id);
    }
}

From source file:com.auroraengine.opengl.shaders.GLProgram.java

License:Open Source License

@Override
public void forceCreate() throws GLException {
    if (index != 0) {
        index = GL20.glCreateProgram();// ww w .j  a v  a  2 s.  c  o  m
        if (index == 0) {
            throw new GLException("Couldn't create program object.");
        }
        try {
            vertex.create(this);
            fragment.create(this);
        } catch (GLException ex) {
            GL20.glDeleteProgram(index);
            throw ex;
        }
        GL20.glAttachShader(index, vertex.index);
        GL20.glAttachShader(index, fragment.index);
        GLException.checkGL("Attaching Shaders");
        // glBindAttribLocation
        GL20.glLinkProgram(index);
        GLException.checkGL("Linking Program");
    }
}

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

License:Apache License

public void glLinkProgram(int program) {
    GL20.glLinkProgram(program);
}

From source file:com.flowpowered.caustic.lwjgl.gl20.GL20Program.java

License:MIT License

@Override
public void link() {
    checkCreated();/*from   w  w w.ja va2  s  .c o  m*/
    // Add the attribute layouts to the program state
    final TObjectIntIterator<String> iterator = attributeLayouts.iterator();
    while (iterator.hasNext()) {
        iterator.advance();
        // Bind the index to the name
        GL20.glBindAttribLocation(id, iterator.value(), iterator.key());
    }
    // Link program
    GL20.glLinkProgram(id);
    // Check program link status
    if (GL20.glGetProgrami(id, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) {
        throw new IllegalStateException("Program could not be linked\n" + GL20.glGetProgramInfoLog(id, 1000));
    }
    if (CausticUtil.isDebugEnabled()) {
        // Validate program
        GL20.glValidateProgram(id);
        // Check program validation status
        if (GL20.glGetProgrami(id, GL20.GL_VALIDATE_STATUS) == GL11.GL_FALSE) {
            final Logger logger = CausticUtil.getCausticLogger();
            logger.log(Level.WARNING,
                    "Program validation failed. This doesn''t mean it won''t work, so you maybe able to ignore it\n{0}",
                    GL20.glGetProgramInfoLog(id, 1000));
        }
    }
    // Load uniforms
    uniforms.clear();
    final int uniformCount = GL20.glGetProgrami(id, GL20.GL_ACTIVE_UNIFORMS);
    final int maxLength = GL20.glGetProgrami(id, GL20.GL_ACTIVE_UNIFORM_MAX_LENGTH);
    final IntBuffer lengthBuffer = CausticUtil.createIntBuffer(1);
    final IntBuffer ignored1 = CausticUtil.createIntBuffer(1);
    final IntBuffer ignored2 = CausticUtil.createIntBuffer(1);
    final ByteBuffer nameBuffer = CausticUtil.createByteBuffer(maxLength);
    final byte[] nameBytes = new byte[maxLength];
    for (int i = 0; i < uniformCount; i++) {
        lengthBuffer.clear();
        ignored1.clear();
        ignored2.clear();
        nameBuffer.clear();
        GL20.glGetActiveUniform(id, i, lengthBuffer, ignored1, ignored2, nameBuffer);
        final int length = lengthBuffer.get();
        nameBuffer.get(nameBytes, 0, length);
        // Simplify array names
        final String name = new String(nameBytes, 0, length).replaceFirst("\\[\\d+\\]", "");
        uniforms.put(name, GL20.glGetUniformLocation(id, name));
        uniformValues.put(name, UNSET);
    }
    // Check for errors
    LWJGLUtil.checkForGLError();
}

From source file:com.geekyaubergine.geekyjgameutil.shader.ShaderProgram.java

License:Open Source License

@Override
public void loadResource() throws IOException {
    vertexShaderID = loadShaderFile(vertexShaderFile, GL20.GL_VERTEX_SHADER);
    fragmentShaderID = loadShaderFile(fragmentShaderFile, GL20.GL_FRAGMENT_SHADER);
    programID = GL20.glCreateProgram();// ww  w  . j a v  a  2 s. co m
    GL20.glAttachShader(programID, vertexShaderID);
    GL20.glAttachShader(programID, fragmentShaderID);

    bindAttributes();

    GL20.glLinkProgram(programID);
    GL20.glValidateProgram(programID);
}

From source file:com.github.begla.blockmania.rendering.manager.ShaderManager.java

License:Apache License

private void initShaders() {
    _preProcessorPreamble += ((Boolean) ConfigurationManager.getInstance().getConfig()
            .get("Graphics.animatedWaterAndGrass")) ? "#define ANIMATED_WATER_AND_GRASS \n" : "";
    _preProcessorPreamble += "#define GAMMA "
            + ConfigurationManager.getInstance().getConfig().get("Graphics.gamma").toString() + "\n";

    createShader("sky_vert.glsl", "sky", GL20.GL_VERTEX_SHADER);
    createShader("sky_frag.glsl", "sky", GL20.GL_FRAGMENT_SHADER);
    createShader("chunk_vert.glsl", "chunk", GL20.GL_VERTEX_SHADER);
    createShader("chunk_frag.glsl", "chunk", GL20.GL_FRAGMENT_SHADER);
    createShader("particle_vert.glsl", "particle", GL20.GL_VERTEX_SHADER);
    createShader("particle_frag.glsl", "particle", GL20.GL_FRAGMENT_SHADER);
    createShader("block_vert.glsl", "block", GL20.GL_VERTEX_SHADER);
    createShader("block_frag.glsl", "block", GL20.GL_FRAGMENT_SHADER);
    createShader("gelatinousCube_vert.glsl", "gelatinousCube", GL20.GL_VERTEX_SHADER);
    createShader("gelatinousCube_frag.glsl", "gelatinousCube", GL20.GL_FRAGMENT_SHADER);
    createShader("clouds_vert.glsl", "clouds", GL20.GL_VERTEX_SHADER);
    createShader("clouds_frag.glsl", "clouds", GL20.GL_FRAGMENT_SHADER);

    for (String s : _fragmentShader.keySet()) {
        int shaderProgram = GL20.glCreateProgram();

        GL20.glAttachShader(shaderProgram, _fragmentShader.get(s));
        GL20.glAttachShader(shaderProgram, _vertexShader.get(s));
        GL20.glLinkProgram(shaderProgram);
        GL20.glValidateProgram(shaderProgram);

        _shaderPrograms.put(s, shaderProgram);
    }/*from  w  ww . ja v  a  2  s  .c o  m*/
}

From source file:com.github.begla.blockmania.rendering.ShaderManager.java

License:Apache License

private void initShaders() {
    createVertexShader("sky_vert.glsl", "sky");
    createFragShader("sky_frag.glsl", "sky");
    createVertexShader("chunk_vert.glsl", "chunk");
    createFragShader("chunk_frag.glsl", "chunk");
    createVertexShader("cloud_vert.glsl", "cloud");
    createFragShader("cloud_frag.glsl", "cloud");
    createVertexShader("particle_vert.glsl", "particle");
    createFragShader("particle_frag.glsl", "particle");

    for (FastMap.Entry<String, Integer> e = _fragmentShader.head(), end = _fragmentShader
            .tail(); (e = e.getNext()) != end;) {
        int shaderProgram = GL20.glCreateProgram();

        GL20.glAttachShader(shaderProgram, _fragmentShader.get(e.getKey()));
        GL20.glAttachShader(shaderProgram, _vertexShader.get(e.getKey()));
        GL20.glLinkProgram(shaderProgram);
        GL20.glValidateProgram(shaderProgram);

        _shaderPrograms.put(e.getKey(), shaderProgram);
    }/*from   w  ww.j  av a  2 s . c o m*/
}

From source file:com.github.kajdreef.mazerunnermvn.MazeRunner.ShaderProgram.java

public void newShaderProgram(String vertexShaderLocation, String fragmentShaderLocation) {
    // Initialize the vertex Shader
    vertexId = compileShader(GL20.GL_VERTEX_SHADER, vertexShaderLocation);

    // Initialize the fragment shader
    fragmentId = compileShader(GL20.GL_FRAGMENT_SHADER, fragmentShaderLocation);

    programId = GL20.glCreateProgram();/*w  w  w .  j  a v  a  2s.com*/
    GL20.glAttachShader(programId, vertexId);
    GL20.glAttachShader(programId, fragmentId);

    // Position information will be attribute 0
    GL20.glBindAttribLocation(programId, 0, "in_Position");
    // Color information will be attribute 1
    GL20.glBindAttribLocation(programId, 1, "in_Color");
    // Texture information will be attribute 2
    GL20.glBindAttribLocation(programId, 2, "in_TextureCoord");

    GL20.glLinkProgram(programId);
    GL20.glValidateProgram(programId);

    // Get matrices uniform locations
    projectionMatrixLocation = GL20.glGetUniformLocation(programId, "projectionMatrix");
    viewMatrixLocation = GL20.glGetUniformLocation(programId, "viewMatrix");
    modelMatrixLocation = GL20.glGetUniformLocation(programId, "modelMatrix");
}