Example usage for org.lwjgl.opengl ARBShaderObjects glValidateProgramARB

List of usage examples for org.lwjgl.opengl ARBShaderObjects glValidateProgramARB

Introduction

In this page you can find the example usage for org.lwjgl.opengl ARBShaderObjects glValidateProgramARB.

Prototype

public static native void glValidateProgramARB(@NativeType("GLhandleARB") int programObj);

Source Link

Document

Validates the program object programObj against the GL state at that moment.

Usage

From source file:com.a2client.corex.Shader.java

License:Open Source License

public Shader(String name, List<String> defines) {
    String defstr = "";
    for (String s : defines)
        defstr += s;//w w  w . j a  v a 2 s. c  o m
    this.name = name + Const.EXT_SHADER + "*" + defstr;
    MyInputStream in = FileSys.getStream(name + Const.EXT_SHADER);
    Log.debug("load shader: " + name);
    Log.debug("defines: " + defines.toString());
    String DEFINE = "#define";

    String define_str = DEFINE;
    for (String s : defines) {
        define_str += " " + s + CRLF + DEFINE;
    }

    try {
        shaders.clear();
        String source = readStreamAsString(in);
        // vertex
        String csource = define_str + " VERTEX" + CRLF + source;
        attach(ARBVertexShader.GL_VERTEX_SHADER_ARB, csource);
        // fragment
        csource = define_str + " FRAGMENT" + CRLF + source;
        attach(ARBFragmentShader.GL_FRAGMENT_SHADER_ARB, csource);
        // geometry
        if (source.contains("#ifdef GEOMETRY")) {
            csource = define_str + " GEOMETRY" + CRLF + source;
            attach(ARBGeometryShader4.GL_GEOMETRY_SHADER_ARB, csource);
            // may be need fix
            ARBGetProgramBinary.glProgramParameteri(ID, ARBGeometryShader4.GL_GEOMETRY_VERTICES_OUT_ARB, 3);
            ARBGetProgramBinary.glProgramParameteri(ID, ARBGeometryShader4.GL_GEOMETRY_INPUT_TYPE_ARB,
                    GL11.GL_TRIANGLES);
            ARBGetProgramBinary.glProgramParameteri(ID, ARBGeometryShader4.GL_GEOMETRY_VERTICES_OUT_ARB,
                    GL11.GL_TRIANGLE_STRIP);
        }

        ID = ARBShaderObjects.glCreateProgramObjectARB();
        Log.debug("shader id: " + ID);
        for (int obj : shaders) {
            ARBShaderObjects.glAttachObjectARB(ID, obj);
        }

        ARBShaderObjects.glLinkProgramARB(ID);
        if (ARBShaderObjects.glGetObjectParameteriARB(ID,
                ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
            Log.error(getLogInfo(ID));
            ID = 0;
            return;
        }

        ARBShaderObjects.glValidateProgramARB(ID);
        if (ARBShaderObjects.glGetObjectParameteriARB(ID,
                ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
            Log.error(getLogInfo(ID));
            ID = 0;
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:com.github.atomicblom.nullplayerexception.client.render.ShaderHelper.java

License:Open Source License

private static int createProgram(String vert, String frag) {
    int vertId = 0, fragId = 0, program;
    if (vert != null)
        vertId = createShader(vert, VERT);
    if (frag != null)
        fragId = createShader(frag, FRAG);

    program = ARBShaderObjects.glCreateProgramObjectARB();
    if (program == 0)
        return 0;

    if (vert != null)
        ARBShaderObjects.glAttachObjectARB(program, vertId);
    if (frag != null)
        ARBShaderObjects.glAttachObjectARB(program, fragId);

    ARBShaderObjects.glLinkProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
        Logger.severe(getLogInfo(program));
        return 0;
    }/*from w  w w  .  j  av a 2  s. co m*/

    ARBShaderObjects.glValidateProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
        Logger.severe(getLogInfo(program));
        return 0;
    }

    return program;
}

From source file:com.runescape.client.revised.editor.modelviewer.Viewport.java

License:Open Source License

public boolean initShader() {
    int vertShader = 0, fragShader = 0;
    try {//  w  w w  .j a  v  a 2s  .c om
        vertShader = this.createShader("./shaders/screen.vert", ARBVertexShader.GL_VERTEX_SHADER_ARB);
        fragShader = this.createShader("./shaders/screen.frag", ARBFragmentShader.GL_FRAGMENT_SHADER_ARB);
    } catch (final Exception exc) {
        exc.printStackTrace();
        return false;
    } finally {
        if ((vertShader == 0) || (fragShader == 0)) {
            return false;
        }
    }
    this.program = ARBShaderObjects.glCreateProgramObjectARB();
    if (this.program == 0) {
        return false;
    }
    ARBShaderObjects.glAttachObjectARB(this.program, vertShader);
    ARBShaderObjects.glAttachObjectARB(this.program, fragShader);
    ARBShaderObjects.glLinkProgramARB(this.program);
    if (ARBShaderObjects.glGetObjectParameteriARB(this.program,
            ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
        System.err.println(this.getLogInfo(this.program));
        return false;
    }
    ARBShaderObjects.glValidateProgramARB(this.program);
    if (ARBShaderObjects.glGetObjectParameteriARB(this.program,
            ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
        System.err.println(this.getLogInfo(this.program));
        return false;
    }
    return true;
}

From source file:com.wuest.prefab.Structures.Render.ShaderHelper.java

License:Open Source License

private static int createProgram(String vert, String frag) {
    int vertId = 0, fragId = 0, program;

    if (vert != null) {
        vertId = createShader(vert, VERT);
    }// ww  w  .  j  av  a  2  s  .  c  om

    if (frag != null) {
        fragId = createShader(frag, FRAG);
    }

    program = ARBShaderObjects.glCreateProgramObjectARB();

    if (program == 0) {
        return 0;
    }

    if (vert != null) {
        ARBShaderObjects.glAttachObjectARB(program, vertId);
    }

    if (frag != null) {
        ARBShaderObjects.glAttachObjectARB(program, fragId);
    }

    ARBShaderObjects.glLinkProgramARB(program);

    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
        return 0;
    }

    ARBShaderObjects.glValidateProgramARB(program);

    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
        return 0;
    }

    return program;
}

From source file:de.sanandrew.mods.turretmod.client.util.ShaderHelper.java

License:Open Source License

private static int createProgram(ResourceLocation vert, ResourceLocation frag) {
    int vertId = 0;
    int fragId = 0;
    int program;/*  ww  w  . j  a va2  s  . co m*/
    if (vert != null) {
        vertId = createShader(vert, VERT);
    }
    if (frag != null) {
        fragId = createShader(frag, FRAG);
    }

    program = ARBShaderObjects.glCreateProgramObjectARB();
    if (program == 0) {
        return 0;
    }

    if (vert != null) {
        ARBShaderObjects.glAttachObjectARB(program, vertId);
    }
    if (frag != null) {
        ARBShaderObjects.glAttachObjectARB(program, fragId);
    }

    ARBShaderObjects.glLinkProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
        TmrConstants.LOG.log(Level.ERROR, getLogInfo(program));
        return 0;
    }

    ARBShaderObjects.glValidateProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
        TmrConstants.LOG.log(Level.ERROR, getLogInfo(program));
        return 0;
    }

    return program;
}

From source file:elucent.roots.render.ShaderHandler.java

License:Open Source License

private static int createProgram(String vert, String frag) {
    int vertId = 0, fragId = 0;
    if (vert != null)
        vertId = createShader(vert, VERT_ST);
    if (frag != null)
        fragId = createShader(frag, FRAG_ST);

    int program = ARBShaderObjects.glCreateProgramObjectARB();
    if (program == 0)
        return 0;

    if (vert != null)
        ARBShaderObjects.glAttachObjectARB(program, vertId);
    if (frag != null)
        ARBShaderObjects.glAttachObjectARB(program, fragId);

    ARBShaderObjects.glLinkProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
        FMLLog.log(Level.ERROR, getLogInfo(program));
        return 0;
    }/*  ww  w . j  a v  a  2 s.  c  o m*/

    ARBShaderObjects.glValidateProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
        FMLLog.log(Level.ERROR, getLogInfo(program));
        return 0;
    }

    return program;
}

From source file:fox.spiteful.ridiculous.client.shaders.ShaderHelper.java

License:Creative Commons License

private static int createProgram(String vert, String frag) {
    int vertId = 0, fragId = 0, program = 0;
    if (vert != null)
        vertId = createShader(vert, VERT);
    if (frag != null)
        fragId = createShader(frag, FRAG);
    program = ARBShaderObjects.glCreateProgramObjectARB();
    if (program == 0)
        return 0;
    if (vert != null)
        ARBShaderObjects.glAttachObjectARB(program, vertId);
    if (frag != null)
        ARBShaderObjects.glAttachObjectARB(program, fragId);
    ARBShaderObjects.glLinkProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
        FMLLog.log(Level.ERROR, getLogInfo(program));
        return 0;
    }/*  w w w  . jav  a 2 s  .  com*/
    ARBShaderObjects.glValidateProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
        FMLLog.log(Level.ERROR, getLogInfo(program));
        return 0;
    }
    return program;
}

From source file:game.map.Shader.java

public Shader() {
    int vertShader = 0, fragShader = 0;

    try {//from  w w  w.  ja va  2s .co  m
        vertShader = createShader("src/Terrain/shaders/screen.vert", ARBVertexShader.GL_VERTEX_SHADER_ARB);
        fragShader = createShader("src/Terrain/shaders/screen.frag", ARBFragmentShader.GL_FRAGMENT_SHADER_ARB);
    } catch (Exception exc) {
        exc.printStackTrace();
        return;
    } finally {
        if (vertShader == 0 || fragShader == 0)
            return;
    }

    program = ARBShaderObjects.glCreateProgramObjectARB();

    if (program == 0)
        return;

    /*
    * if the vertex and fragment shaders setup sucessfully,
    * attach them to the shader program, link the sahder program
    * (into the GL context I suppose), and validate
    */
    ARBShaderObjects.glAttachObjectARB(program, vertShader);
    ARBShaderObjects.glAttachObjectARB(program, fragShader);

    ARBShaderObjects.glLinkProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
        System.err.println(getLogInfo(program));
        return;
    }

    ARBShaderObjects.glValidateProgramARB(program);
    if (ARBShaderObjects.glGetObjectParameteriARB(program,
            ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
        System.err.println(getLogInfo(program));
        return;
    }

    useShader = true;
}

From source file:ivorius.ivtoolkit.rendering.IvOpenGLHelper.java

License:Apache License

public static void glValidateProgram(int program) {
    Field useARBField = ReflectionHelper.findField(OpenGlHelper.class, "field_153214_y");
    useARBField.setAccessible(true);/*from w ww.  ja  v  a2  s.c  o m*/
    boolean useARB = false;

    try {
        useARB = useARBField.getBoolean(null);
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }

    if (useARB)
        ARBShaderObjects.glValidateProgramARB(program);
    else
        GL20.glValidateProgram(program);
}

From source file:sketchwars.graphics.Shader.java

private void loadShader(String vertexShaderFile, String fragmentShaderFile) throws Exception {
    int vertShader = createShaderFromFile(vertexShaderFile, ARBVertexShader.GL_VERTEX_SHADER_ARB);
    int fragShader = createShaderFromFile(fragmentShaderFile, ARBFragmentShader.GL_FRAGMENT_SHADER_ARB);

    int shaderProgram = ARBShaderObjects.glCreateProgramObjectARB();

    if (shaderProgram == 0) {
        throw new Exception("Error Creating shader program object.");
    }/* ww  w. j a  va 2 s . c o  m*/

    ARBShaderObjects.glAttachObjectARB(shaderProgram, vertShader);
    ARBShaderObjects.glAttachObjectARB(shaderProgram, fragShader);

    ARBShaderObjects.glLinkProgramARB(shaderProgram);
    if (ARBShaderObjects.glGetObjectParameteriARB(shaderProgram,
            ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) {
        throw new Exception(getLogInfo(shaderProgram));
    }

    ARBShaderObjects.glValidateProgramARB(shaderProgram);
    if (ARBShaderObjects.glGetObjectParameteriARB(shaderProgram,
            ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) {
        throw new Exception(getLogInfo(shaderProgram));
    }

    program = shaderProgram;
}