Example usage for org.lwjgl.opengl ARBVertexProgram GL_VERTEX_PROGRAM_ARB

List of usage examples for org.lwjgl.opengl ARBVertexProgram GL_VERTEX_PROGRAM_ARB

Introduction

In this page you can find the example usage for org.lwjgl.opengl ARBVertexProgram GL_VERTEX_PROGRAM_ARB.

Prototype

int GL_VERTEX_PROGRAM_ARB

To view the source code for org.lwjgl.opengl ARBVertexProgram GL_VERTEX_PROGRAM_ARB.

Click Source Link

Document

Accepted by the cap parameter of Disable, Enable, and IsEnabled, by the pname parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev, and by the target parameter of ProgramStringARB, BindProgramARB, ProgramEnvParameter4[df][v]ARB, ProgramLocalParameter4[df][v]ARB, GetProgramEnvParameter[df]vARB, GetProgramLocalParameter[df]vARB, GetProgramivARB, and GetProgramStringARB.

Usage

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

License:Open Source License

protected static int create(final ByteBuffer program) {

    final IntBuffer buf = BufferUtils.createIntBuffer(1);

    ARBProgram.glGenProgramsARB(buf);//from  w ww  .j  av  a2 s  .co m
    ARBProgram.glBindProgramARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB, buf.get(0));
    ARBProgram.glProgramStringARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB,
            ARBProgram.GL_PROGRAM_FORMAT_ASCII_ARB, program);

    checkProgramError();

    return buf.get(0);
}

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

License:Open Source License

/**
 * Applies this vertex program to the current scene. Checks if the GL_ARB_vertex_program extension is supported
 * before attempting to enable this program.
 * //from  ww  w  .  ja v a 2  s .c o  m
 * @see com.ardor3d.renderer.state.RenderState#apply()
 */
public static void apply(final VertexProgramState state) {
    final RenderContext context = ContextManager.getCurrentContext();
    if (context.getCapabilities().isVertexProgramSupported()) {
        // ask for the current state record
        final VertexProgramStateRecord record = (VertexProgramStateRecord) context
                .getStateRecord(StateType.VertexProgram);
        context.setCurrentState(StateType.VertexProgram, state);

        if (!record.isValid() || record.getReference() != state) {
            record.setReference(state);
            if (state.isEnabled()) {
                // Vertex program not yet loaded
                if (state._getProgramID() == -1) {
                    if (state.getProgramAsBuffer() != null) {
                        final int id = create(state.getProgramAsBuffer());
                        state._setProgramID(id);
                    } else {
                        return;
                    }
                }

                GL11.glEnable(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB);
                ARBProgram.glBindProgramARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB, state._getProgramID());

                // load environmental parameters...
                for (int i = 0; i < VertexProgramState._getEnvParameters().length; i++) {
                    if (VertexProgramState._getEnvParameters()[i] != null) {
                        ARBProgram.glProgramEnvParameter4fARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB, i,
                                VertexProgramState._getEnvParameters()[i][0],
                                VertexProgramState._getEnvParameters()[i][1],
                                VertexProgramState._getEnvParameters()[i][2],
                                VertexProgramState._getEnvParameters()[i][3]);
                    }
                }

                // load local parameters...
                if (state.isUsingParameters()) {
                    // no parameters are used
                    for (int i = 0; i < state._getParameters().length; i++) {
                        if (state._getParameters()[i] != null) {
                            ARBProgram.glProgramLocalParameter4fARB(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB, i,
                                    state._getParameters()[i][0], state._getParameters()[i][1],
                                    state._getParameters()[i][2], state._getParameters()[i][3]);
                        }
                    }
                }

            } else {
                GL11.glDisable(ARBVertexProgram.GL_VERTEX_PROGRAM_ARB);
            }
        }

        if (!record.isValid()) {
            record.validate();
        }
    }
}