Example usage for org.lwjgl.opengl GL20 glValidateProgram

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

Introduction

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

Prototype

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

Source Link

Document

Validates a program object.

Usage

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();// www. ja v  a 2 s.  c  o  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.badlogic.gdx.backends.jglfw.JglfwGL20.java

License:Apache License

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

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

License:MIT License

@Override
public void link() {
    checkCreated();// w  ww .j  a  v a 2s  .co  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();// w  w  w.j ava  2 s . c  o  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 .j  ava 2  s. com*/
}

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 ww  w.  j  a v a2 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();/*from  w  w  w .  j a  v a  2s  . c  om*/
    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");
}

From source file:com.grillecube.client.opengl.GLProgram.java

public void link() {
    this.progID = GL20.glCreateProgram();
    for (GLShader shader : this.shaders) {
        GL20.glAttachShader(this.progID, shader.getID());
    }/*from w ww  .j a va 2s.c om*/
    this.bindAttributes();
    GL20.glLinkProgram(this.progID);
    String message = GL20.glGetProgramInfoLog(this.progID);
    if (message.length() > 0) {
        Logger.get().log(Logger.Level.WARNING, "Linking shader message: " + message);
    }

    GL20.glValidateProgram(this.progID);

    this.linkUniforms();

    GLH.glhAddObject(this);
}

From source file:com.grillecube.engine.opengl.object.GLProgram.java

public void link() {
    this._programID = GL20.glCreateProgram();
    for (GLShader shader : this._shaders) {
        GL20.glAttachShader(this._programID, shader.getID());
    }/*from  www  .  j a  va 2 s .  c  o  m*/
    this.bindAttributes();
    GL20.glLinkProgram(this._programID);
    String message = GL20.glGetProgramInfoLog(this._programID);
    if (message.length() > 0) {
        Logger.get().log(Logger.Level.WARNING, "Linking shader message: " + message);
    }

    GL20.glValidateProgram(this._programID);

    this.linkUniforms();

    GLH.glhAddObject(this);
}