Java 类org.lwjgl.test.opengles.util.ShaderProgram 实例源码

项目:Wolf_game    文件:QuadRenderer.java   
QuadRenderer() {
    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "attribute highp vec2 vPosition;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 0.0, 1.0);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    uniMVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");

    final int vPosition = program.getAttributeLocation("vPosition");
    glVertexAttribPointer(vPosition, 2, GL_FLOAT, false, 0, 0);
    glEnableVertexAttribArray(vPosition);
}
项目:GPVM    文件:QuadRenderer.java   
QuadRenderer() {
    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "attribute highp vec2 vPosition;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 0.0, 1.0);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    uniMVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");

    final int vPosition = program.getAttributeLocation("vPosition");
    glVertexAttribPointer(vPosition, 2, GL_FLOAT, false, 0, 0);
    glEnableVertexAttribArray(vPosition);
}
项目:GPVM    文件:QuadRenderer.java   
QuadRenderer() {
    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "attribute highp vec2 vPosition;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 0.0, 1.0);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    uniMVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");

    final int vPosition = program.getAttributeLocation("vPosition");
    glVertexAttribPointer(vPosition, 2, GL_FLOAT, false, 0, 0);
    glEnableVertexAttribArray(vPosition);
}
项目:SpaceStationAlpha    文件:QuadRenderer.java   
QuadRenderer() {
    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "attribute highp vec2 vPosition;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 0.0, 1.0);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    uniMVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");

    final int vPosition = program.getAttributeLocation("vPosition");
    glVertexAttribPointer(vPosition, 2, GL_FLOAT, false, 0, 0);
    glEnableVertexAttribArray(vPosition);
}
项目:TeacherSmash    文件:QuadRenderer.java   
QuadRenderer() {
    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "attribute highp vec2 vPosition;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 0.0, 1.0);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    uniMVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");

    final int vPosition = program.getAttributeLocation("vPosition");
    glVertexAttribPointer(vPosition, 2, GL_FLOAT, false, 0, 0);
    glEnableVertexAttribArray(vPosition);
}
项目:3d-Demo    文件:QuadRenderer.java   
QuadRenderer() {
    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "attribute highp vec2 vPosition;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 0.0, 1.0);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    uniMVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");

    final int vPosition = program.getAttributeLocation("vPosition");
    glVertexAttribPointer(vPosition, 2, GL_FLOAT, false, 0, 0);
    glEnableVertexAttribArray(vPosition);
}
项目:Wolf_game    文件:Gears.java   
/**
 *
 */
private void init() throws LWJGLException {
    final int WIDTH = 640;
    final int HEIGHT = 480;

    Display.setLocation((Display.getDisplayMode().getWidth() - WIDTH) / 2,
                        (Display.getDisplayMode().getHeight() - HEIGHT) / 2);
    try {
        Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
    } catch (PowerManagementEventException e) {
        e.printStackTrace();
    }
    Display.setTitle("Gears");
    Display.create(new PixelFormat());

    //glCoverageMaskNV(true);

    // setup ogl
    glViewport(0, 0, WIDTH, HEIGHT);
    glFrontFace(GL_CCW);
    glCullFace(GL_BACK);
    glEnable(GL_CULL_FACE);
    glEnable(GL_DEPTH_TEST);

    final Vector3f lp = new Vector3f(5.0f, 5.0f, 10.0f);
    lp.normalise();
    glLight(GL_LIGHT0, GL_POSITION, lp.getX(), lp.getY(), lp.getZ(), 0.0f);

    /* make the gears */
    gear1 = new Gear(gear(1.0f, 4.0f, 1.0f, 20, 0.7f), new float[] { 0.8f, 0.1f, 0.0f, 1.0f });
    gear2 = new Gear(gear(0.5f, 2.0f, 2.0f, 10, 0.7f), new float[] { 0.0f, 0.8f, 0.2f, 1.0f });
    gear3 = new Gear(gear(1.3f, 2.0f, 0.5f, 10, 0.7f), new float[] { 0.2f, 0.2f, 1.0f, 1.0f });

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    final float h = (float)300 / (float)300;
    glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0f, 0.0f, -40.0f);

    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp vec4 LIGHT_POS;\n" +
                                       "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "uniform mediump mat3 NORMAL_MATRIX;\n" +
                                       "uniform lowp vec3 GEAR_COLOR;\n" +
                                       "attribute highp vec3 vPosition;\n" +
                                       "attribute mediump vec3 vNormal;\n" +
                                       "varying lowp vec3 color;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 1.0);\n" +
                                       "\tvec3 normal = NORMAL_MATRIX * vNormal;\n" +
                                       "\tcolor = max(dot(normal, vec3(LIGHT_POS)), 0.0) * GEAR_COLOR + vec3(0.05);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "varying lowp vec3 color;\n" +
                                         "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(color, 1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    LIGHT_POS = program.getUniformLocation("LIGHT_POS");

    MVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");
    NM = program.getUniformLocation("NORMAL_MATRIX");

    GEAR_COLOR = program.getUniformLocation("GEAR_COLOR");

    vPosition = program.getAttributeLocation("vPosition");
    vNormal = program.getAttributeLocation("vNormal");

    glEnableVertexAttribArray(vNormal);
    glEnableVertexAttribArray(vPosition);
}
项目:GPVM    文件:Gears.java   
/**
 *
 */
private void init() throws LWJGLException {
    final int WIDTH = 640;
    final int HEIGHT = 480;

    Display.setLocation((Display.getDisplayMode().getWidth() - WIDTH) / 2,
                        (Display.getDisplayMode().getHeight() - HEIGHT) / 2);
    try {
        Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
    } catch (PowerManagementEventException e) {
        e.printStackTrace();
    }
    Display.setTitle("Gears");
    Display.create(new PixelFormat());

    //glCoverageMaskNV(true);

    // setup ogl
    glViewport(0, 0, WIDTH, HEIGHT);
    glFrontFace(GL_CCW);
    glCullFace(GL_BACK);
    glEnable(GL_CULL_FACE);
    glEnable(GL_DEPTH_TEST);

    final Vector3f lp = new Vector3f(5.0f, 5.0f, 10.0f);
    lp.normalise();
    glLight(GL_LIGHT0, GL_POSITION, lp.getX(), lp.getY(), lp.getZ(), 0.0f);

    /* make the gears */
    gear1 = new Gear(gear(1.0f, 4.0f, 1.0f, 20, 0.7f), new float[] { 0.8f, 0.1f, 0.0f, 1.0f });
    gear2 = new Gear(gear(0.5f, 2.0f, 2.0f, 10, 0.7f), new float[] { 0.0f, 0.8f, 0.2f, 1.0f });
    gear3 = new Gear(gear(1.3f, 2.0f, 0.5f, 10, 0.7f), new float[] { 0.2f, 0.2f, 1.0f, 1.0f });

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    final float h = (float)300 / (float)300;
    glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0f, 0.0f, -40.0f);

    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp vec4 LIGHT_POS;\n" +
                                       "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "uniform mediump mat3 NORMAL_MATRIX;\n" +
                                       "uniform lowp vec3 GEAR_COLOR;\n" +
                                       "attribute highp vec3 vPosition;\n" +
                                       "attribute mediump vec3 vNormal;\n" +
                                       "varying lowp vec3 color;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 1.0);\n" +
                                       "\tvec3 normal = NORMAL_MATRIX * vNormal;\n" +
                                       "\tcolor = max(dot(normal, vec3(LIGHT_POS)), 0.0) * GEAR_COLOR + vec3(0.05);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "varying lowp vec3 color;\n" +
                                         "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(color, 1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    LIGHT_POS = program.getUniformLocation("LIGHT_POS");

    MVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");
    NM = program.getUniformLocation("NORMAL_MATRIX");

    GEAR_COLOR = program.getUniformLocation("GEAR_COLOR");

    vPosition = program.getAttributeLocation("vPosition");
    vNormal = program.getAttributeLocation("vNormal");

    glEnableVertexAttribArray(vNormal);
    glEnableVertexAttribArray(vPosition);
}
项目:GPVM    文件:Gears.java   
/**
 *
 */
private void init() throws LWJGLException {
    final int WIDTH = 640;
    final int HEIGHT = 480;

    Display.setLocation((Display.getDisplayMode().getWidth() - WIDTH) / 2,
                        (Display.getDisplayMode().getHeight() - HEIGHT) / 2);
    try {
        Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
    } catch (PowerManagementEventException e) {
        e.printStackTrace();
    }
    Display.setTitle("Gears");
    Display.create(new PixelFormat());

    //glCoverageMaskNV(true);

    // setup ogl
    glViewport(0, 0, WIDTH, HEIGHT);
    glFrontFace(GL_CCW);
    glCullFace(GL_BACK);
    glEnable(GL_CULL_FACE);
    glEnable(GL_DEPTH_TEST);

    final Vector3f lp = new Vector3f(5.0f, 5.0f, 10.0f);
    lp.normalise();
    glLight(GL_LIGHT0, GL_POSITION, lp.getX(), lp.getY(), lp.getZ(), 0.0f);

    /* make the gears */
    gear1 = new Gear(gear(1.0f, 4.0f, 1.0f, 20, 0.7f), new float[] { 0.8f, 0.1f, 0.0f, 1.0f });
    gear2 = new Gear(gear(0.5f, 2.0f, 2.0f, 10, 0.7f), new float[] { 0.0f, 0.8f, 0.2f, 1.0f });
    gear3 = new Gear(gear(1.3f, 2.0f, 0.5f, 10, 0.7f), new float[] { 0.2f, 0.2f, 1.0f, 1.0f });

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    final float h = (float)300 / (float)300;
    glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0f, 0.0f, -40.0f);

    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp vec4 LIGHT_POS;\n" +
                                       "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "uniform mediump mat3 NORMAL_MATRIX;\n" +
                                       "uniform lowp vec3 GEAR_COLOR;\n" +
                                       "attribute highp vec3 vPosition;\n" +
                                       "attribute mediump vec3 vNormal;\n" +
                                       "varying lowp vec3 color;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 1.0);\n" +
                                       "\tvec3 normal = NORMAL_MATRIX * vNormal;\n" +
                                       "\tcolor = max(dot(normal, vec3(LIGHT_POS)), 0.0) * GEAR_COLOR + vec3(0.05);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "varying lowp vec3 color;\n" +
                                         "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(color, 1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    LIGHT_POS = program.getUniformLocation("LIGHT_POS");

    MVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");
    NM = program.getUniformLocation("NORMAL_MATRIX");

    GEAR_COLOR = program.getUniformLocation("GEAR_COLOR");

    vPosition = program.getAttributeLocation("vPosition");
    vNormal = program.getAttributeLocation("vNormal");

    glEnableVertexAttribArray(vNormal);
    glEnableVertexAttribArray(vPosition);
}
项目:SpaceStationAlpha    文件:Gears.java   
/**
 *
 */
private void init() throws LWJGLException {
    final int WIDTH = 640;
    final int HEIGHT = 480;

    Display.setLocation((Display.getDisplayMode().getWidth() - WIDTH) / 2,
                        (Display.getDisplayMode().getHeight() - HEIGHT) / 2);
    try {
        Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
    } catch (PowerManagementEventException e) {
        e.printStackTrace();
    }
    Display.setTitle("Gears");
    Display.create(new PixelFormat());

    //glCoverageMaskNV(true);

    // setup ogl
    glViewport(0, 0, WIDTH, HEIGHT);
    glFrontFace(GL_CCW);
    glCullFace(GL_BACK);
    glEnable(GL_CULL_FACE);
    glEnable(GL_DEPTH_TEST);

    final Vector3f lp = new Vector3f(5.0f, 5.0f, 10.0f);
    lp.normalise();
    glLight(GL_LIGHT0, GL_POSITION, lp.getX(), lp.getY(), lp.getZ(), 0.0f);

    /* make the gears */
    gear1 = new Gear(gear(1.0f, 4.0f, 1.0f, 20, 0.7f), new float[] { 0.8f, 0.1f, 0.0f, 1.0f });
    gear2 = new Gear(gear(0.5f, 2.0f, 2.0f, 10, 0.7f), new float[] { 0.0f, 0.8f, 0.2f, 1.0f });
    gear3 = new Gear(gear(1.3f, 2.0f, 0.5f, 10, 0.7f), new float[] { 0.2f, 0.2f, 1.0f, 1.0f });

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    final float h = (float)300 / (float)300;
    glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0f, 0.0f, -40.0f);

    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp vec4 LIGHT_POS;\n" +
                                       "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "uniform mediump mat3 NORMAL_MATRIX;\n" +
                                       "uniform lowp vec3 GEAR_COLOR;\n" +
                                       "attribute highp vec3 vPosition;\n" +
                                       "attribute mediump vec3 vNormal;\n" +
                                       "varying lowp vec3 color;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 1.0);\n" +
                                       "\tvec3 normal = NORMAL_MATRIX * vNormal;\n" +
                                       "\tcolor = max(dot(normal, vec3(LIGHT_POS)), 0.0) * GEAR_COLOR + vec3(0.05);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "varying lowp vec3 color;\n" +
                                         "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(color, 1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    LIGHT_POS = program.getUniformLocation("LIGHT_POS");

    MVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");
    NM = program.getUniformLocation("NORMAL_MATRIX");

    GEAR_COLOR = program.getUniformLocation("GEAR_COLOR");

    vPosition = program.getAttributeLocation("vPosition");
    vNormal = program.getAttributeLocation("vNormal");

    glEnableVertexAttribArray(vNormal);
    glEnableVertexAttribArray(vPosition);
}
项目:TeacherSmash    文件:Gears.java   
/**
 *
 */
private void init() throws LWJGLException {
    final int WIDTH = 640;
    final int HEIGHT = 480;

    Display.setLocation((Display.getDisplayMode().getWidth() - WIDTH) / 2,
                        (Display.getDisplayMode().getHeight() - HEIGHT) / 2);
    try {
        Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
    } catch (PowerManagementEventException e) {
        e.printStackTrace();
    }
    Display.setTitle("Gears");
    Display.create(new PixelFormat());

    //glCoverageMaskNV(true);

    // setup ogl
    glViewport(0, 0, WIDTH, HEIGHT);
    glFrontFace(GL_CCW);
    glCullFace(GL_BACK);
    glEnable(GL_CULL_FACE);
    glEnable(GL_DEPTH_TEST);

    final Vector3f lp = new Vector3f(5.0f, 5.0f, 10.0f);
    lp.normalise();
    glLight(GL_LIGHT0, GL_POSITION, lp.getX(), lp.getY(), lp.getZ(), 0.0f);

    /* make the gears */
    gear1 = new Gear(gear(1.0f, 4.0f, 1.0f, 20, 0.7f), new float[] { 0.8f, 0.1f, 0.0f, 1.0f });
    gear2 = new Gear(gear(0.5f, 2.0f, 2.0f, 10, 0.7f), new float[] { 0.0f, 0.8f, 0.2f, 1.0f });
    gear3 = new Gear(gear(1.3f, 2.0f, 0.5f, 10, 0.7f), new float[] { 0.2f, 0.2f, 1.0f, 1.0f });

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    final float h = (float)300 / (float)300;
    glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0f, 0.0f, -40.0f);

    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp vec4 LIGHT_POS;\n" +
                                       "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "uniform mediump mat3 NORMAL_MATRIX;\n" +
                                       "uniform lowp vec3 GEAR_COLOR;\n" +
                                       "attribute highp vec3 vPosition;\n" +
                                       "attribute mediump vec3 vNormal;\n" +
                                       "varying lowp vec3 color;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 1.0);\n" +
                                       "\tvec3 normal = NORMAL_MATRIX * vNormal;\n" +
                                       "\tcolor = max(dot(normal, vec3(LIGHT_POS)), 0.0) * GEAR_COLOR + vec3(0.05);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "varying lowp vec3 color;\n" +
                                         "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(color, 1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    LIGHT_POS = program.getUniformLocation("LIGHT_POS");

    MVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");
    NM = program.getUniformLocation("NORMAL_MATRIX");

    GEAR_COLOR = program.getUniformLocation("GEAR_COLOR");

    vPosition = program.getAttributeLocation("vPosition");
    vNormal = program.getAttributeLocation("vNormal");

    glEnableVertexAttribArray(vNormal);
    glEnableVertexAttribArray(vPosition);
}
项目:3d-Demo    文件:Gears.java   
/**
 *
 */
private void init() throws LWJGLException {
    final int WIDTH = 640;
    final int HEIGHT = 480;

    Display.setLocation((Display.getDisplayMode().getWidth() - WIDTH) / 2,
                        (Display.getDisplayMode().getHeight() - HEIGHT) / 2);
    try {
        Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
    } catch (PowerManagementEventException e) {
        e.printStackTrace();
    }
    Display.setTitle("Gears");
    Display.create(new PixelFormat());

    //glCoverageMaskNV(true);

    // setup ogl
    glViewport(0, 0, WIDTH, HEIGHT);
    glFrontFace(GL_CCW);
    glCullFace(GL_BACK);
    glEnable(GL_CULL_FACE);
    glEnable(GL_DEPTH_TEST);

    final Vector3f lp = new Vector3f(5.0f, 5.0f, 10.0f);
    lp.normalise();
    glLight(GL_LIGHT0, GL_POSITION, lp.getX(), lp.getY(), lp.getZ(), 0.0f);

    /* make the gears */
    gear1 = new Gear(gear(1.0f, 4.0f, 1.0f, 20, 0.7f), new float[] { 0.8f, 0.1f, 0.0f, 1.0f });
    gear2 = new Gear(gear(0.5f, 2.0f, 2.0f, 10, 0.7f), new float[] { 0.0f, 0.8f, 0.2f, 1.0f });
    gear3 = new Gear(gear(1.3f, 2.0f, 0.5f, 10, 0.7f), new float[] { 0.2f, 0.2f, 1.0f, 1.0f });

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    final float h = (float)300 / (float)300;
    glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0f, 0.0f, -40.0f);

    vsh = new Shader(GL_VERTEX_SHADER, "uniform highp vec4 LIGHT_POS;\n" +
                                       "uniform highp mat4 MODEL_VIEW_PROJECTION_MATRIX;\n" +
                                       "uniform mediump mat3 NORMAL_MATRIX;\n" +
                                       "uniform lowp vec3 GEAR_COLOR;\n" +
                                       "attribute highp vec3 vPosition;\n" +
                                       "attribute mediump vec3 vNormal;\n" +
                                       "varying lowp vec3 color;\n" +
                                       "void main(void) {\n" +
                                       "\tgl_Position = MODEL_VIEW_PROJECTION_MATRIX * vec4(vPosition, 1.0);\n" +
                                       "\tvec3 normal = NORMAL_MATRIX * vNormal;\n" +
                                       "\tcolor = max(dot(normal, vec3(LIGHT_POS)), 0.0) * GEAR_COLOR + vec3(0.05);\n" +
                                       "}");

    fsh = new Shader(GL_FRAGMENT_SHADER, "varying lowp vec3 color;\n" +
                                         "void main(void) {\n" +
                                         "\tgl_FragColor = vec4(color, 1.0);\n" +
                                         "}");

    program = new ShaderProgram(vsh, fsh);
    program.enable();

    LIGHT_POS = program.getUniformLocation("LIGHT_POS");

    MVP = program.getUniformLocation("MODEL_VIEW_PROJECTION_MATRIX");
    NM = program.getUniformLocation("NORMAL_MATRIX");

    GEAR_COLOR = program.getUniformLocation("GEAR_COLOR");

    vPosition = program.getAttributeLocation("vPosition");
    vNormal = program.getAttributeLocation("vNormal");

    glEnableVertexAttribArray(vNormal);
    glEnableVertexAttribArray(vPosition);
}