Example usage for org.lwjgl.opengl ARBGeometryShader4 GL_GEOMETRY_VERTICES_OUT_ARB

List of usage examples for org.lwjgl.opengl ARBGeometryShader4 GL_GEOMETRY_VERTICES_OUT_ARB

Introduction

In this page you can find the example usage for org.lwjgl.opengl ARBGeometryShader4 GL_GEOMETRY_VERTICES_OUT_ARB.

Prototype

int GL_GEOMETRY_VERTICES_OUT_ARB

To view the source code for org.lwjgl.opengl ARBGeometryShader4 GL_GEOMETRY_VERTICES_OUT_ARB.

Click Source Link

Document

Accepted by the pname parameter of ProgramParameteriARB and GetProgramiv.

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. ja  va2s  .  co  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();
    }
}