Example usage for org.lwjgl.opengl GL20 glCreateProgram

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

Introduction

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

Prototype

@NativeType("GLuint")
public static int glCreateProgram() 

Source Link

Document

Creates a program object.

Usage

From source file:renderEngine.ShaderProgram.java

/**
 * Creates a new instance of ShaderProgram, and links the program.
 *
 * @param vertexFile The relative location of the vertex shader file.
 * @param fragmentFile The relative location of the fragment shader file.
 *///  w  w  w. j a  v  a 2 s .  c  o m
public ShaderProgram(String vertexFile, String fragmentFile) {
    this.vertexShaderID = loadShader(vertexFile, GL20.GL_VERTEX_SHADER);
    this.fragmentShaderID = loadShader(fragmentFile, GL20.GL_FRAGMENT_SHADER);

    this.programID = GL20.glCreateProgram();
    GL20.glAttachShader(programID, vertexShaderID);
    GL20.glAttachShader(programID, fragmentShaderID);
    bindVariablesAndValidate();
}

From source file:se.angergard.engine.graphics.ShaderProgram.java

License:Apache License

/** Creates a new ShaderProgram, the constructor creates an empty program and creates */
public ShaderProgram() {
    program = GL20.glCreateProgram();
    uniforms = new HashMap<String, Integer>();

    fragmentShader = vertexShader = geometryShader = -1;
}

From source file:thebounzer.org.lwgldemo.glutils.ShaderProgram.java

License:Open Source License

private int allocateProgram() {
    return GL20.glCreateProgram();
}

From source file:uk.co.ifs_studios.engine.shader.ShaderProgram.java

License:Open Source License

/**
 * Create new ShaderProgram.
 */
public ShaderProgram() {
    this.id = GL20.glCreateProgram();
}

From source file:vertigo.graphics.lwjgl.ShaderUtils.java

License:Open Source License

public static int attachShaders(String vertexCode, String fragmentCode) throws Exception {
    int vertexShaderProgram;
    int fragmentShaderProgram;
    int shaderprogram;
    String log = "";

    vertexShaderProgram = compileShader(vertexCode, GL20.GL_VERTEX_SHADER);
    fragmentShaderProgram = compileShader(fragmentCode, GL20.GL_FRAGMENT_SHADER);

    shaderprogram = GL20.glCreateProgram();
    GL20.glAttachShader(shaderprogram, vertexShaderProgram);
    GL20.glAttachShader(shaderprogram, fragmentShaderProgram);
    GL20.glLinkProgram(shaderprogram);// ww w. j a  va 2  s .  co m

    //grab our info log
    String infoLog = GL20.glGetProgramInfoLog(shaderprogram,
            GL20.glGetProgrami(shaderprogram, GL20.GL_INFO_LOG_LENGTH));

    //if some log exists, append it 
    if (infoLog != null && infoLog.trim().length() != 0)
        log += infoLog;

    //if the link failed, throw some sort of exception
    if (GL20.glGetProgrami(shaderprogram, GL20.GL_LINK_STATUS) == GL11.GL_FALSE)
        throw new LWJGLException("Failure in linking program. Error log:\n" + infoLog);

    //detach and delete the shaders which are no longer needed
    GL20.glDetachShader(shaderprogram, vertexShaderProgram);
    GL20.glDetachShader(shaderprogram, fragmentShaderProgram);
    GL20.glDeleteShader(vertexShaderProgram);
    GL20.glDeleteShader(fragmentShaderProgram);

    GL20.glValidateProgram(shaderprogram);

    return shaderprogram;
}

From source file:vertigo.graphics.lwjgl.ShaderUtils.java

License:Open Source License

private static int attachVFShaders(ShaderProg prog) throws Exception {
    System.out.println("attachVFShader");

    int vertexShaderProgram;
    int fragmentShaderProgram;
    int shaderprogram;
    vertexShaderProgram = GL20.glCreateShader(GL20.GL_VERTEX_SHADER);
    fragmentShaderProgram = GL20.glCreateShader(GL20.GL_FRAGMENT_SHADER);

    GL20.glShaderSource(vertexShaderProgram, prog.getVertexSource());
    GL20.glCompileShader(vertexShaderProgram);
    if (GL20.glGetShaderi(vertexShaderProgram, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
        System.err.println("Compile error of vertexshader");
    }//from   www  .  java2s.  c  o  m

    GL20.glShaderSource(fragmentShaderProgram, prog.getFragmentSource());
    GL20.glCompileShader(fragmentShaderProgram);
    if (GL20.glGetShaderi(fragmentShaderProgram, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
        System.err.println("Compile error of fragmentshader");
    }

    //
    shaderprogram = GL20.glCreateProgram();

    GL20.glAttachShader(shaderprogram, vertexShaderProgram);
    GL20.glAttachShader(shaderprogram, fragmentShaderProgram);
    GL20.glLinkProgram(shaderprogram);
    GL20.glValidateProgram(shaderprogram);

    if (GL20.glGetProgrami(shaderprogram, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) {

        IntBuffer intBuffer = BufferTools.newIntBuffer(1);
        GL20.glGetProgram(shaderprogram, GL20.GL_INFO_LOG_LENGTH, intBuffer);

        int size = intBuffer.get(0);
        System.err.println("Program link error: " + size);
        if (size > 0) {
            ByteBuffer byteBuffer = BufferTools.newByteBuffer(size);
            GL20.glGetProgramInfoLog(shaderprogram, intBuffer, byteBuffer);
            byteBuffer.rewind();
            byte[] bytearray = new byte[byteBuffer.remaining()];
            byteBuffer.get(bytearray);
            System.err.println(bytearray.length);
            String s = new String(bytearray, 0, bytearray.length - 1, Charset.forName("UTF-8"));
            System.err.print("<<" + s + ">>");
            /**
             * *
             * for (byte b : bytearray) { System.err.print(b+";"); } *
             */
            System.err.println(" - End");
        } else {
            System.out.println("Unknown");
        }
        System.exit(1);
    }
    System.out.println("End of attachVFShader");
    return shaderprogram;

}

From source file:view.util.ShaderProgram.java

public void create() {
    program = GL20.glCreateProgram();
    GL20.glAttachShader(program, s0.getID());
    GL20.glAttachShader(program, s1.getID());
    GL20.glLinkProgram(program);
}

From source file:voxicity.ChunkNode.java

License:Open Source License

void create_shader_prog() {
    shader_prog = GL20.glCreateProgram();

    int vert_shader = create_vert_shader("shader/block.vert");
    int frag_shader = create_frag_shader("shader/block.frag");

    GL20.glAttachShader(shader_prog, vert_shader);
    GL20.glAttachShader(shader_prog, frag_shader);
    GL20.glLinkProgram(shader_prog);//from   ww  w  .j av  a 2s .c  om

    if (check_shader_error(shader_prog)) {
        GL20.glDeleteProgram(shader_prog);
        shader_prog = 0;
    }

    GL20.glUseProgram(shader_prog);

    int uniform;
    if ((uniform = GL20.glGetUniformLocation(shader_prog, "textures")) != -1) {
        GL20.glUniform1i(uniform, 0);
    }

    System.out.println("Textures at: " + GL20.glGetUniformLocation(shader_prog, "textures"));

    GL20.glUseProgram(0);
}

From source file:wrath.client.graphics.ShaderProgram.java

License:Open Source License

/**
 * Reads the two specified shader files and compiles the shaders into an OpenGL program format.
 * It is recommended that shaders be stored in the 'assets/shaders' directory (which is not present by default).
 * @param vertFile The {@link java.io.File} to read the vert shader from.
 * @param fragFile The {@link java.io.File} to read the frag shader from.
 * @return Returns the ShaderProgram object.
 *///from  w w  w  .  ja  v a 2s.c  o m
public static ShaderProgram loadShaderProgram(File vertFile, File fragFile) {
    if (!vertFile.exists()) {
        System.err.println(
                "Could not load shader from file '" + vertFile.getAbsolutePath() + "'! File not found!");
        return null;
    }

    if (!fragFile.exists()) {
        System.err.println(
                "Could not load shader from file '" + fragFile.getAbsolutePath() + "'! File not found!");
        return null;
    }

    String vsrc = "";

    try {
        String inp;
        try (BufferedReader read = new BufferedReader(new FileReader(vertFile))) {
            while ((inp = read.readLine()) != null)
                vsrc = vsrc + inp + '\n';
        }
    } catch (IOException e) {
        System.err.println("Could not load shader from file '" + vertFile.getAbsolutePath() + "'! I/O Error!");
        return null;
    }

    String fsrc = "";

    try {
        String inp;
        try (BufferedReader read = new BufferedReader(new FileReader(fragFile))) {
            while ((inp = read.readLine()) != null)
                fsrc = fsrc + inp + '\n';
        }
    } catch (IOException e) {
        System.err.println("Could not load shader from file '" + fragFile.getAbsolutePath() + "'! I/O Error!");
        return null;
    }

    int prog = GL20.glCreateProgram();
    int vert = GL20.glCreateShader(GL20.GL_VERTEX_SHADER);
    int frag = GL20.glCreateShader(GL20.GL_FRAGMENT_SHADER);

    GL20.glShaderSource(vert, vsrc);
    GL20.glShaderSource(frag, fsrc);

    GL20.glCompileShader(vert);
    if (GL20.glGetShaderi(vert, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
        System.err.println(
                "Could not load shader from file '" + vertFile.getAbsolutePath() + "'! Compile Error:");
        System.err.println(GL20.glGetShaderInfoLog(vert));
        return null;
    }

    GL20.glCompileShader(frag);
    if (GL20.glGetShaderi(frag, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
        System.err.println(
                "Could not load shader from file '" + fragFile.getAbsolutePath() + "'! Compile Error:");
        System.err.println(GL20.glGetShaderInfoLog(frag));
        return null;
    }

    GL20.glAttachShader(prog, vert);
    GL20.glAttachShader(prog, frag);

    ShaderProgram ret = new ShaderProgram(prog, vert, frag);
    Game.getCurrentInstance().addToTrashCleanup(ret);
    return ret;
}