Example usage for org.lwjgl.opengl ARBShaderObjects glDetachObjectARB

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

Introduction

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

Prototype

public static native void glDetachObjectARB(@NativeType("GLhandleARB") int containerObj,
        @NativeType("GLhandleARB") int attachedObj);

Source Link

Document

Detaches an object from the container object it is attached to.

Usage

From source file:com.ardor3d.scene.state.lwjgl.LwjglShaderObjectsStateUtil.java

License:Open Source License

/** Removes the geometry shader */
private static void removeGeomShader(final GLSLShaderObjectsState state) {
    if (state._geometryShaderID != -1) {
        ARBShaderObjects.glDetachObjectARB(state._programID, state._geometryShaderID);
        ARBShaderObjects.glDeleteObjectARB(state._geometryShaderID);
    }//from  w w w.j  a  v  a 2  s .  co  m
}

From source file:com.ardor3d.scene.state.lwjgl.LwjglShaderObjectsStateUtil.java

License:Open Source License

/** Removes the fragment shader */
private static void removeFragShader(final GLSLShaderObjectsState state) {
    if (state._fragmentShaderID != -1) {
        ARBShaderObjects.glDetachObjectARB(state._programID, state._fragmentShaderID);
        ARBShaderObjects.glDeleteObjectARB(state._fragmentShaderID);
    }//from  w  w  w . j ava  2s .  c o m
}

From source file:com.ardor3d.scene.state.lwjgl.LwjglShaderObjectsStateUtil.java

License:Open Source License

/**
 * Removes the vertex shader//w ww  . j  a v a 2s  . c o  m
 */
private static void removeVertShader(final GLSLShaderObjectsState state) {
    if (state._vertexShaderID != -1) {
        ARBShaderObjects.glDetachObjectARB(state._programID, state._vertexShaderID);
        ARBShaderObjects.glDeleteObjectARB(state._vertexShaderID);
    }
}

From source file:com.ardor3d.scene.state.lwjgl.LwjglShaderObjectsStateUtil.java

License:Open Source License

/** Removes the tessellation control shader */
private static void removeTessControlShader(final GLSLShaderObjectsState state) {
    if (state._tessellationControlShaderID != -1) {
        ARBShaderObjects.glDetachObjectARB(state._programID, state._tessellationControlShaderID);
        ARBShaderObjects.glDeleteObjectARB(state._tessellationControlShaderID);
    }// w ww  . ja va  2 s.  c  o  m
}

From source file:com.ardor3d.scene.state.lwjgl.LwjglShaderObjectsStateUtil.java

License:Open Source License

/** Removes the tessellation evaluation shader */
private static void removeTessEvalShader(final GLSLShaderObjectsState state) {
    if (state._tessellationEvaluationShaderID != -1) {
        ARBShaderObjects.glDetachObjectARB(state._programID, state._tessellationEvaluationShaderID);
        ARBShaderObjects.glDeleteObjectARB(state._tessellationEvaluationShaderID);
    }/*from  w  w w . ja  v a  2s  . c o m*/
}

From source file:lessur.util.shader.ShaderManager.java

License:GNU General Public License

/**
 * Removes a program and all shaders associated with it
 * @param The id/index of the program// www  .ja  v  a  2 s . c o m
 */
public void removeProgram(int programID) {
    Set<Integer> shaders = programToShaders.get(programID);
    if (shaders == null) {
        throw new IllegalArgumentException("The programID " + programID + "does not exist");
    }
    //detach Shaders from program
    for (int id : shaders) {
        if (has_opengl2) {
            GL20.glDetachShader(programID, id);
        } else if (has_arb) {
            ARBShaderObjects.glDetachObjectARB(programID, id);
        }
    }
    //Delete unused shaders
    for (int id : shaders) {
        Set<Integer> progs = shaderToPrograms.get(id);
        progs.remove(programID);
        if (progs.isEmpty()) {
            if (has_opengl2) {
                GL20.glDeleteShader(id);
            }
            shaderToPrograms.remove(id);
        }
    }
    //Delete Program
    if (has_opengl2) {
        GL20.glDeleteProgram(programID);
    } else if (has_arb) {
        ARBShaderObjects.glDeleteObjectARB(programID);
    }
    programToShaders.remove(programID);
}