Example usage for org.lwjgl.opengl ARBShaderObjects glAttachObjectARB

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

Introduction

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

Prototype

public static native void glAttachObjectARB(@NativeType("GLhandleARB") int containerObj,
        @NativeType("GLhandleARB") int obj);

Source Link

Document

Attaches an object to a container object.

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;//from ww  w . ja v  a2  s  .  c om
    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.ardor3d.scene.state.lwjgl.LwjglShaderObjectsStateUtil.java

License:Open Source License

protected static void sendToGL(final GLSLShaderObjectsState state, final ContextCapabilities caps) {
    if (state.getVertexShader() == null && state.getFragmentShader() == null) {
        logger.warning("Could not find shader resources!" + "(both inputbuffers are null)");
        state._needSendShader = false;//from   w  w  w  .j  av a2s  .  c  o  m
        return;
    }

    if (state._programID == -1) {
        state._programID = ARBShaderObjects.glCreateProgramObjectARB();
    }

    if (state.getVertexShader() != null) {
        if (state._vertexShaderID != -1) {
            removeVertShader(state);
        }

        state._vertexShaderID = ARBShaderObjects.glCreateShaderObjectARB(ARBVertexShader.GL_VERTEX_SHADER_ARB);

        // Create the sources
        ARBShaderObjects.glShaderSourceARB(state._vertexShaderID, state.getVertexShader());

        // Compile the vertex shader
        final IntBuffer compiled = BufferUtils.createIntBuffer(1);
        ARBShaderObjects.glCompileShaderARB(state._vertexShaderID);
        ARBShaderObjects.glGetObjectParameterARB(state._vertexShaderID,
                ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled);
        checkProgramError(compiled, state._vertexShaderID, state._vertexShaderName);

        // Attach the program
        ARBShaderObjects.glAttachObjectARB(state._programID, state._vertexShaderID);
    } else if (state._vertexShaderID != -1) {
        removeVertShader(state);
        state._vertexShaderID = -1;
    }

    if (state.getFragmentShader() != null) {
        if (state._fragmentShaderID != -1) {
            removeFragShader(state);
        }

        state._fragmentShaderID = ARBShaderObjects
                .glCreateShaderObjectARB(ARBFragmentShader.GL_FRAGMENT_SHADER_ARB);

        // Create the sources
        ARBShaderObjects.glShaderSourceARB(state._fragmentShaderID, state.getFragmentShader());

        // Compile the fragment shader
        final IntBuffer compiled = BufferUtils.createIntBuffer(1);
        ARBShaderObjects.glCompileShaderARB(state._fragmentShaderID);
        ARBShaderObjects.glGetObjectParameterARB(state._fragmentShaderID,
                ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled);
        checkProgramError(compiled, state._fragmentShaderID, state._fragmentShaderName);

        // Attach the program
        ARBShaderObjects.glAttachObjectARB(state._programID, state._fragmentShaderID);
    } else if (state._fragmentShaderID != -1) {
        removeFragShader(state);
        state._fragmentShaderID = -1;
    }

    if (caps.isGeometryShader4Supported()) {
        if (state.getGeometryShader() != null) {
            if (state._geometryShaderID != -1) {
                removeGeomShader(state);
            }

            state._geometryShaderID = ARBShaderObjects
                    .glCreateShaderObjectARB(ARBGeometryShader4.GL_GEOMETRY_SHADER_ARB);

            // Create the sources
            ARBShaderObjects.glShaderSourceARB(state._geometryShaderID, state.getGeometryShader());

            // Compile the fragment shader
            final IntBuffer compiled = BufferUtils.createIntBuffer(1);
            ARBShaderObjects.glCompileShaderARB(state._geometryShaderID);
            ARBShaderObjects.glGetObjectParameterARB(state._geometryShaderID,
                    ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled);
            checkProgramError(compiled, state._geometryShaderID, state._geometryShaderName);

            // Attach the program
            ARBShaderObjects.glAttachObjectARB(state._programID, state._geometryShaderID);
        } else if (state._geometryShaderID != -1) {
            removeGeomShader(state);
            state._geometryShaderID = -1;
        }
    }

    if (caps.isTessellationShadersSupported()) {
        if (state.getTessellationControlShader() != null) {
            if (state._tessellationControlShaderID != -1) {
                removeTessControlShader(state);
            }

            state._tessellationControlShaderID = ARBShaderObjects
                    .glCreateShaderObjectARB(ARBTessellationShader.GL_TESS_CONTROL_SHADER);

            // Create the sources
            ARBShaderObjects.glShaderSourceARB(state._tessellationControlShaderID,
                    state.getTessellationControlShader());

            // Compile the tessellation control shader
            final IntBuffer compiled = BufferUtils.createIntBuffer(1);
            ARBShaderObjects.glCompileShaderARB(state._tessellationControlShaderID);
            ARBShaderObjects.glGetObjectParameterARB(state._tessellationControlShaderID,
                    ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled);
            checkProgramError(compiled, state._tessellationControlShaderID,
                    state._tessellationControlShaderName);

            // Attach the program
            ARBShaderObjects.glAttachObjectARB(state._programID, state._tessellationControlShaderID);
        } else if (state._tessellationControlShaderID != -1) {
            removeTessControlShader(state);
            state._tessellationControlShaderID = -1;
        }

        if (state.getTessellationEvaluationShader() != null) {
            if (state._tessellationEvaluationShaderID != -1) {
                removeTessEvalShader(state);
            }

            state._tessellationEvaluationShaderID = ARBShaderObjects
                    .glCreateShaderObjectARB(ARBTessellationShader.GL_TESS_CONTROL_SHADER);

            // Create the sources
            ARBShaderObjects.glShaderSourceARB(state._tessellationEvaluationShaderID,
                    state.getTessellationEvaluationShader());

            // Compile the tessellation control shader
            final IntBuffer compiled = BufferUtils.createIntBuffer(1);
            ARBShaderObjects.glCompileShaderARB(state._tessellationEvaluationShaderID);
            ARBShaderObjects.glGetObjectParameterARB(state._tessellationEvaluationShaderID,
                    ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled);
            checkProgramError(compiled, state._tessellationEvaluationShaderID,
                    state._tessellationEvaluationShaderName);

            // Attach the program
            ARBShaderObjects.glAttachObjectARB(state._programID, state._tessellationEvaluationShaderID);
        } else if (state._tessellationEvaluationShaderID != -1) {
            removeTessEvalShader(state);
            state._tessellationEvaluationShaderID = -1;
        }
    }

    ARBShaderObjects.glLinkProgramARB(state._programID);
    checkLinkError(state._programID);
    state.setNeedsRefresh(true);
    state._needSendShader = false;
}

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;
    }/*  www  .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 {/*from ww  w  .j  a  v  a2  s  . co m*/
        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);
    }/*from   ww w .j  av a  2s . co  m*/

    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;//www  .  j av a  2s .  c  o  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  .  ja  va 2 s .  c  om*/

    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:flash.display.Shader.java

License:Open Source License

protected void compileShader() {
    System.out.println("Compiling shader ...");
    final String vertexShader = vertexShader();
    final String fragmentShader = fragmentShader();

    System.out.println("Vertex shader:");
    System.out.println(vertexShader);
    System.out.println("Fragment shader:");
    System.out.println(fragmentShader);

    _vertexShaderId = ARBShaderObjects.glCreateShaderObjectARB(ARBVertexShader.GL_VERTEX_SHADER_ARB);
    ARBShaderObjects.glShaderSourceARB(_vertexShaderId, vertexShader);
    ARBShaderObjects.glCompileShaderARB(_vertexShaderId);
    System.out.println("VertexShader Info: " + ARBShaderObjects.glGetInfoLogARB(_vertexShaderId, 8192));

    _fragmentShaderId = ARBShaderObjects.glCreateShaderObjectARB(ARBFragmentShader.GL_FRAGMENT_SHADER_ARB);
    ARBShaderObjects.glShaderSourceARB(_fragmentShaderId, fragmentShader);
    ARBShaderObjects.glCompileShaderARB(_fragmentShaderId);
    System.out.println("FragmentShader Info: " + ARBShaderObjects.glGetInfoLogARB(_fragmentShaderId, 8192));

    _programId = ARBShaderObjects.glCreateProgramObjectARB();
    ARBShaderObjects.glAttachObjectARB(_programId, _vertexShaderId);
    ARBShaderObjects.glAttachObjectARB(_programId, _fragmentShaderId);
    ARBShaderObjects.glLinkProgramARB(_programId);
    System.out.println("Program Info: " + ARBShaderObjects.glGetInfoLogARB(_programId, 8192));
}

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. ja v  a  2s  .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:game.map.Shader.java

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

    try {//  www  .j a  v  a2  s. c  o 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;
}