Example usage for org.lwjgl.opengl GL20 glUseProgram

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

Introduction

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

Prototype

public static void glUseProgram(@NativeType("GLuint") int program) 

Source Link

Document

Installs a program object as part of current rendering state.

Usage

From source file:glvis.renderers.LowIntensityTriangleStripGlitch.java

@Override
public void render() {
    if (initial) {
        GL11.glClear(16384);/*from   w w  w .ja  v a 2 s  .c o  m*/
        initial = false;
    }

    int LIGHT_POINTS = 288; // 1152
    LIGHT_POINTS = 2;
    //        int LIGHT_POINTS = 1152; // 1152
    float LIGHT_POINT_SEPARATION = 4.42f;

    float LIGHT_Y = 256f;
    float LIGHT_X = 0f;

    short raw = 0;
    float fraw = 0;
    float calc = 0;

    float distx = 0;
    float disty = 0;
    boolean swch = false;
    int hak = 0;

    short rraw = 0;

    float vdist = 0f;

    boolean chswch = false;

    GL11.glEnable(GL11.GL_BLEND); //Enable blending.
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    if (initial) {
        initial = false;
        GL11.glColor4f(0f, 0f, 0f, 1f);
    } else
        GL11.glColor4f(0f, 0f, 0f, 0.05f);
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex2f(0, 0);
    GL11.glVertex2f(1280, 0);
    GL11.glVertex2f(1280, 720);
    GL11.glVertex2f(0, 720);
    GL11.glEnd();
    short[] samp = provider.getCurrentSample();
    int samplen = provider.getCurrentSampleLength();
    GL11.glColor4f(1f, 1f, 1f, 1f);
    //        GL11.glPolygonMode( GL11.GL_FRONT_AND_BACK, GL11.GL_LINE );
    float a1 = 0f, a2 = 0f, a3 = 0f, a4 = 0f, a5 = 0f, a6 = 0f, a7 = 0f, a8 = 0f, a9 = 0f;
    for (int ie = 0; ie < LIGHT_POINTS; ie++) {
        //GL11.glColor4f(((float)ie)/LIGHT_POINTS,((float)ie)/LIGHT_POINTS,((float)ie)/LIGHT_POINTS,1f);
        //            this.skip = false;
        itra++;
        itra %= samplen;
        raw = samp[itra];
        rraw = samp[samplen - (itra + 1)];

        //            itra ++;
        //            itra %= samplen;
        //            raw = samp[itra];
        //            rraw = samp[samplen-(itra+1)];
        //            itra ++;
        //            itra %= samplen;
        //            raw += samp[itra];
        //            rraw += samp[samplen-(itra+1)];
        //            raw/=2;
        //            rraw/=2;

        //            
        phys_x[ie] /= 1.2f;
        phys_y[ie] /= 1.2f;

        distx = -loc_x[ie];
        disty = -loc_y[ie];
        phys_x[ie] += distx + raw / 96f;
        phys_y[ie] += disty + rraw / 96f;
        //            phys_x[ie] += distx + raw/128f;
        //            phys_y[ie] += disty + rraw/128f;

        loc_x[ie] += phys_x[ie] / 16f;
        loc_y[ie] += phys_y[ie] / 16f;
        vdist = Math.abs(distx) + Math.abs(disty);
        vdist /= 4f;

        R[ie] /= 1.08;
        G[ie] /= 1.08;
        B[ie] /= 1.08;
        R[ie] += ((Math.abs(loc_y[ie] % 2f) + Math.abs(loc_x[ie] % 2f)) * vdist) / 1024f;
        G[ie] += ((loc_x[ie] % 2f + Math.abs(loc_y[ie] % 2f)) * vdist) / 512f;
        B[ie] += ((Math.abs(loc_x[ie] % 2f) + loc_y[ie] % 2f) * vdist) / 512f;
        LIGHT_X = loc_x[ie] * 2 + 1280 / 2;
        LIGHT_Y = loc_y[ie] * 2 + 720 / 2;
        GL11.glBegin(GL11.GL_TRIANGLE_STRIP);

        a1 = (R[ie] + G[ie] + B[ie]) / 3f;
        a2 = (lR[ie] + lG[ie] + lB[ie]) / 3f;
        a3 = (lR2[ie] + lG2[ie] + lB2[ie]) / 3f;
        a4 = (lR3[ie] + lG3[ie] + lB3[ie]) / 3f;
        a5 = (lR4[ie] + lG4[ie] + lB4[ie]) / 3f;
        a6 = (lR5[ie] + lG5[ie] + lB5[ie]) / 3f;
        a7 = (lR6[ie] + lG6[ie] + lB6[ie]) / 3f;

        GL11.glColor4f(lR6[ie], lG6[ie], lB6[ie], a7);
        GL11.glVertex2f(lastx6[ie], lasty6[ie]);
        GL11.glColor4f(lR5[ie], lG5[ie], lB5[ie], a6);
        GL11.glVertex2f(lastx5[ie], lasty5[ie]);
        GL11.glColor4f(lR4[ie], lG4[ie], lB4[ie], a5);
        GL11.glVertex2f(lastx4[ie], lasty4[ie]);
        GL11.glColor4f(lR3[ie], lG3[ie], lB3[ie], a4);
        GL11.glVertex2f(lastx3[ie], lasty3[ie]);
        GL11.glColor4f(lR2[ie], lG2[ie], lB2[ie], a3);
        GL11.glVertex2f(lastx2[ie], lasty2[ie]);
        GL11.glColor4f(lR[ie], lG[ie], lB[ie], a2);
        GL11.glVertex2f(lastx[ie], lasty[ie]);
        GL11.glColor4f(R[ie] * 2, G[ie] * 2, B[ie] * 2, a1);
        GL11.glVertex2f(LIGHT_X, LIGHT_Y);

        lastx9[ie] = lastx8[ie];
        lasty9[ie] = lasty8[ie];
        lastx8[ie] = lastx7[ie];
        lasty8[ie] = lasty7[ie];
        lastx7[ie] = lastx6[ie];
        lasty7[ie] = lasty6[ie];

        lastx6[ie] = lastx5[ie];
        lasty6[ie] = lasty5[ie];
        lastx5[ie] = lastx4[ie];
        lasty5[ie] = lasty4[ie];
        lastx4[ie] = lastx3[ie];
        lasty4[ie] = lasty3[ie];
        lastx3[ie] = lastx2[ie];
        lasty3[ie] = lasty2[ie];
        lastx2[ie] = lastx[ie];
        lasty2[ie] = lasty[ie];
        //            lastx[ie] = LIGHT_X;
        //            lasty[ie] = LIGHT_Y;
        lastx[ie] = LIGHT_X;
        lasty[ie] = LIGHT_Y;

        lR9[ie] = lR8[ie];
        lG9[ie] = lG8[ie];
        lB9[ie] = lB8[ie];
        lR8[ie] = lR7[ie];
        lG8[ie] = lG7[ie];
        lB8[ie] = lB7[ie];
        lR7[ie] = lR6[ie];
        lG7[ie] = lG6[ie];
        lB7[ie] = lB6[ie];

        lR6[ie] = lR5[ie] / 1.2f;
        lG6[ie] = lG5[ie] / 1.2f;
        lB6[ie] = lB5[ie] / 1.2f;
        lR5[ie] = lR4[ie] / 1.2f;
        lG5[ie] = lG4[ie] / 1.2f;
        lB5[ie] = lB4[ie] / 1.2f;
        lR4[ie] = lR3[ie] / 1.2f;
        lG4[ie] = lG3[ie] / 1.2f;
        lB4[ie] = lB3[ie] / 1.2f;
        lR3[ie] = lR2[ie] / 1.2f;
        lG3[ie] = lG2[ie] / 1.2f;
        lB3[ie] = lB2[ie] / 1.2f;
        lR2[ie] = lR[ie] / 1.2f;
        lG2[ie] = lG[ie] / 1.2f;
        lB2[ie] = lB[ie] / 1.2f;
        lR[ie] = R[ie] * 2;
        lG[ie] = G[ie] * 2;
        lB[ie] = B[ie] * 2;
        GL11.glEnd();

    }
    GL11.glDisable(GL11.GL_BLEND); //Enable blending.
    for (int ie = 0; ie < LIGHT_POINTS; ie++) {
        //            LIGHT_X = loc_x[ie]*4+1280/2;
        //            LIGHT_Y = loc_y[ie]*4+720/2;

        LIGHT_X = loc_x[ie] * 2 + 1280 / 2;
        LIGHT_Y = loc_y[ie] * 2 + 720 / 2;

        GL11.glColorMask(true, true, true, true);
        GL20.glUseProgram(this.shaderProgram);
        GL20.glUniform2f(GL20.glGetUniformLocation(this.shaderProgram, (CharSequence) "location"), LIGHT_X,
                720.0F - LIGHT_Y);
        GL20.glUniform3f(GL20.glGetUniformLocation(this.shaderProgram, (CharSequence) "colour"), R[ie] / 2,
                G[ie] / 2, B[ie] / 2);
        GL11.glEnable(3042);
        GL11.glBlendFunc(1, 1);
        GL11.glBegin(7);
        GL11.glVertex2f(0.0F, 0.0F);
        GL11.glVertex2f(0.0F, 720.0F);
        GL11.glVertex2f(1280.0F, 720.0F);
        GL11.glVertex2f(1280.0F, 0.0F);
        GL11.glEnd();
        GL11.glDisable(3042);
        GL20.glUseProgram(0);
        //            GL11.glColor3f(lR9[ie], lG9[ie], lB9[ie]);
        //            GL11.glVertex2f(lastx9[ie], lasty9[ie]);
        //            GL11.glColor3f(lR8[ie], lG8[ie], lB8[ie]);
        //            GL11.glVertex2f(lastx8[ie], lasty8[ie]);
        //            GL11.glColor3f(lR7[ie], lG7[ie], lB7[ie]);
        //            GL11.glVertex2f(lastx7[ie], lasty7[ie]);

    }
    //
}

From source file:glvis.renderers.NeatSymmetrical.java

@Override
public void render() {
    if (initial) {
        GL11.glClear(16384);/*from   w  w  w  .j av  a2  s  . co  m*/
        initial = false;
    }

    int LIGHT_POINTS = 288 * 2; // 1152
    //        LIGHT_POINTS = 2;
    //        int LIGHT_POINTS = 1152; // 1152
    float LIGHT_POINT_SEPARATION = 4.42f;

    float LIGHT_Y = 256f;
    float LIGHT_X = 0f;

    short raw = 0;
    float fraw = 0;
    float calc = 0;

    float distx = 0;
    float disty = 0;
    boolean swch = false;
    int hak = 0;

    short rraw = 0;

    float vdist = 0f;

    boolean chswch = false;

    GL11.glEnable(GL11.GL_BLEND); //Enable blending.
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    if (initial) {
        initial = false;
        GL11.glColor4f(0f, 0f, 0f, 1f);
    } else
        GL11.glColor4f(0f, 0f, 0f, 0.1f);
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex2f(0, 0);
    GL11.glVertex2f(1280, 0);
    GL11.glVertex2f(1280, 720);
    GL11.glVertex2f(0, 720);
    GL11.glEnd();
    GL11.glDisable(GL11.GL_BLEND); //Enable blending.
    GL11.glColor4f(1f, 1f, 1f, 1f);
    //        GL11.glPolygonMode( GL11.GL_FRONT_AND_BACK, GL11.GL_LINE );
    short[] samp = provider.getCurrentSample();
    int samplen = provider.getCurrentSampleLength();

    for (int ie = 0; ie < LIGHT_POINTS; ie++) {
        //GL11.glColor4f(((float)ie)/LIGHT_POINTS,((float)ie)/LIGHT_POINTS,((float)ie)/LIGHT_POINTS,1f);

        //            itra ++;
        //            itra %= Player.samplen;
        //            raw = Player.samp[itra];
        //            rraw = Player.samp[Player.samplen-(itra+1)];

        itra++;
        itra %= samplen;
        raw = samp[itra];
        rraw = samp[samplen - (itra + 1)];
        itra++;
        itra %= samplen;
        raw += samp[itra];
        rraw += samp[samplen - (itra + 1)];
        raw /= 2;
        rraw /= 2;

        //            
        phys_x[ie] /= 2f;
        phys_y[ie] /= 2f;

        distx = -loc_x[ie];
        disty = -loc_y[ie];
        //            phys_x[ie] += distx + raw/64f;
        //            phys_y[ie] += disty + rraw/64f;
        phys_x[ie] += distx + raw / 64f;
        phys_y[ie] += disty + rraw / 64f;

        loc_x[ie] += phys_x[ie] / 16f;
        loc_y[ie] += phys_y[ie] / 16f;
        LIGHT_X = loc_x[ie] * 2 + 1280 / 2;
        LIGHT_Y = loc_y[ie] * 2 + 720 / 2;

        GL11.glColorMask(true, true, true, true);
        GL20.glUseProgram(this.shaderProgram);
        GL20.glUniform2f(GL20.glGetUniformLocation(this.shaderProgram, (CharSequence) "location"), LIGHT_X,
                720.0F - LIGHT_Y);
        GL20.glUniform3f(GL20.glGetUniformLocation(this.shaderProgram, (CharSequence) "colour"), R[ie] / 14,
                G[ie] / 14, B[ie] / 14);
        GL11.glEnable(3042);
        GL11.glBlendFunc(1, 1);
        GL11.glBegin(7);
        GL11.glVertex2f(0.0F, 0.0F);
        GL11.glVertex2f(0.0F, 720.0F);
        GL11.glVertex2f(1280.0F, 720.0F);
        GL11.glVertex2f(1280.0F, 0.0F);
        GL11.glEnd();
        GL11.glDisable(3042);
        GL20.glUseProgram(0);

    }

    for (int ie = 0; ie < LIGHT_POINTS; ie++) {
        LIGHT_X = loc_x[ie] * 4 + 1280 / 2;
        LIGHT_Y = loc_y[ie] * 4 + 720 / 2;

        vdist = Math.abs(distx) + Math.abs(disty);
        vdist /= 4f;

        R[ie] /= 1.08;
        G[ie] /= 1.08;
        B[ie] /= 1.08;
        R[ie] += ((Math.abs(loc_y[ie] % 2f) + Math.abs(loc_x[ie] % 2f)) * vdist) / 512f;
        G[ie] += ((loc_x[ie] % 2f + Math.abs(loc_y[ie] % 2f)) * vdist) / 256f;
        B[ie] += ((Math.abs(loc_x[ie] % 2f) + loc_y[ie] % 2f) * vdist) / 256f;
        LIGHT_X = loc_x[ie] * 2 + 1280 / 2;
        LIGHT_Y = loc_y[ie] * 2 + 720 / 2;
        //            GL11.glColor3f(lR9[ie], lG9[ie], lB9[ie]);
        //            GL11.glVertex2f(lastx9[ie], lasty9[ie]);
        //            GL11.glColor3f(lR8[ie], lG8[ie], lB8[ie]);
        //            GL11.glVertex2f(lastx8[ie], lasty8[ie]);
        //            GL11.glColor3f(lR7[ie], lG7[ie], lB7[ie]);
        //            GL11.glVertex2f(lastx7[ie], lasty7[ie]);
        GL11.glBegin(GL11.GL_TRIANGLE_STRIP);

        GL11.glColor3f(lR6[ie], lG6[ie], lB6[ie]);
        GL11.glVertex2f(lastx6[ie], lasty6[ie]);
        GL11.glColor3f(lR5[ie], lG5[ie], lB5[ie]);
        GL11.glVertex2f(lastx5[ie], lasty5[ie]);
        GL11.glColor3f(lR4[ie], lG4[ie], lB4[ie]);
        GL11.glVertex2f(lastx4[ie], lasty4[ie]);
        GL11.glColor3f(lR3[ie], lG3[ie], lB3[ie]);
        GL11.glVertex2f(lastx3[ie], lasty3[ie]);
        GL11.glColor3f(lR2[ie], lG2[ie], lB2[ie]);
        GL11.glVertex2f(lastx2[ie], lasty2[ie]);
        GL11.glColor3f(lR[ie], lG[ie], lB[ie]);
        GL11.glVertex2f(lastx[ie], lasty[ie]);
        GL11.glColor3f(R[ie] * 2, G[ie] * 2, B[ie] * 2);
        GL11.glVertex2f(LIGHT_X, LIGHT_Y);

        lastx9[ie] = lastx8[ie];
        lasty9[ie] = lasty8[ie];
        lastx8[ie] = lastx7[ie];
        lasty8[ie] = lasty7[ie];
        lastx7[ie] = lastx6[ie];
        lasty7[ie] = lasty6[ie];

        lastx6[ie] = lastx5[ie];
        lasty6[ie] = lasty5[ie];
        lastx5[ie] = lastx4[ie];
        lasty5[ie] = lasty4[ie];
        lastx4[ie] = lastx3[ie];
        lasty4[ie] = lasty3[ie];
        lastx3[ie] = lastx2[ie];
        lasty3[ie] = lasty2[ie];
        lastx2[ie] = lastx[ie];
        lasty2[ie] = lasty[ie];
        //            lastx[ie] = LIGHT_X;
        //            lasty[ie] = LIGHT_Y;
        lastx[ie] = LIGHT_X;
        lasty[ie] = LIGHT_Y;

        lR9[ie] = lR8[ie];
        lG9[ie] = lG8[ie];
        lB9[ie] = lB8[ie];
        lR8[ie] = lR7[ie];
        lG8[ie] = lG7[ie];
        lB8[ie] = lB7[ie];
        lR7[ie] = lR6[ie];
        lG7[ie] = lG6[ie];
        lB7[ie] = lB6[ie];

        lR6[ie] = lR5[ie] / 1.2f;
        lG6[ie] = lG5[ie] / 1.2f;
        lB6[ie] = lB5[ie] / 1.2f;
        lR5[ie] = lR4[ie] / 1.2f;
        lG5[ie] = lG4[ie] / 1.2f;
        lB5[ie] = lB4[ie] / 1.2f;
        lR4[ie] = lR3[ie] / 1.2f;
        lG4[ie] = lG3[ie] / 1.2f;
        lB4[ie] = lB3[ie] / 1.2f;
        lR3[ie] = lR2[ie] / 1.2f;
        lG3[ie] = lG2[ie] / 1.2f;
        lB3[ie] = lB2[ie] / 1.2f;
        lR2[ie] = lR[ie] / 1.2f;
        lG2[ie] = lG[ie] / 1.2f;
        lB2[ie] = lB[ie] / 1.2f;
        lR[ie] = R[ie] * 2;
        lG[ie] = G[ie] * 2;
        lB[ie] = B[ie] * 2;
        GL11.glEnd();

    }
    //
}

From source file:glvis.renderers.NeatSymmetricalTwo.java

@Override
public void render() {
    Display.sync(60);/*from   w w  w  . j  a  v  a2  s  . c o m*/
    if (initial) {
        GL11.glClear(16384);
        initial = false;
    }

    int LIGHT_POINTS = 288; // 1152
    //        LIGHT_POINTS = 2;
    //        int LIGHT_POINTS = 1152; // 1152
    float LIGHT_POINT_SEPARATION = 4.42f;

    float LIGHT_Y = 256f;
    float LIGHT_X = 0f;

    short raw = 0;
    float fraw = 0;
    float calc = 0;

    float distx = 0;
    float disty = 0;
    boolean swch = false;
    int hak = 0;

    short rraw = 0;

    float vdist = 0f;

    boolean chswch = false;

    GL11.glEnable(GL11.GL_BLEND); //Enable blending.
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    if (initial) {
        initial = false;
        GL11.glColor4f(0f, 0f, 0f, 1f);
    } else
        GL11.glColor4f(0f, 0f, 0f, 0.1f);
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex2f(0, 0);
    GL11.glVertex2f(1280, 0);
    GL11.glVertex2f(1280, 720);
    GL11.glVertex2f(0, 720);
    GL11.glEnd();
    short[] samp = provider.getCurrentSample();
    int samplen = provider.getCurrentSampleLength();
    GL11.glColor4f(1f, 1f, 1f, 1f);
    //        GL11.glPolygonMode( GL11.GL_FRONT_AND_BACK, GL11.GL_LINE );
    float a1 = 0f, a2 = 0f, a3 = 0f, a4 = 0f, a5 = 0f, a6 = 0f, a7 = 0f, a8 = 0f, a9 = 0f;
    for (int ie = 0; ie < LIGHT_POINTS; ie++) {
        //GL11.glColor4f(((float)ie)/LIGHT_POINTS,((float)ie)/LIGHT_POINTS,((float)ie)/LIGHT_POINTS,1f);
        //            this.skip = false;
        itra++;
        itra %= samplen;
        raw = samp[itra];
        rraw = samp[samplen - (itra + 1)];

        //            itra ++;
        //            itra %= samplen;
        //            raw = samp[itra];
        //            rraw = samp[samplen-(itra+1)];
        //            itra ++;
        //            itra %= samplen;
        //            raw += samp[itra];
        //            rraw += samp[samplen-(itra+1)];
        //            raw/=2;
        //            rraw/=2;

        //            
        phys_x[ie] /= 2f;
        phys_y[ie] /= 2f;

        distx = -loc_x[ie];
        disty = -loc_y[ie];
        //            phys_x[ie] += distx + raw/64f;
        //            phys_y[ie] += disty + rraw/64f;
        phys_x[ie] += distx + raw / 64f;
        phys_y[ie] += disty + rraw / 64f;

        loc_x[ie] += phys_x[ie] / 16f;
        loc_y[ie] += phys_y[ie] / 16f;
        vdist = Math.abs(distx) + Math.abs(disty);
        vdist /= 4f;

        R[ie] /= 1.08;
        G[ie] /= 1.08;
        B[ie] /= 1.08;
        R[ie] += ((Math.abs(loc_y[ie] % 2f) + Math.abs(loc_x[ie] % 2f)) * vdist) / 1024f;
        G[ie] += ((loc_x[ie] % 2f + Math.abs(loc_y[ie] % 2f)) * vdist) / 512f;
        B[ie] += ((Math.abs(loc_x[ie] % 2f) + loc_y[ie] % 2f) * vdist) / 512f;
        LIGHT_X = loc_x[ie] * 2 + 1280 / 2;
        LIGHT_Y = loc_y[ie] * 2 + 720 / 2;
        GL11.glBegin(GL11.GL_TRIANGLE_STRIP);

        a1 = (R[ie] + G[ie] + B[ie]) / 3f;
        a2 = (lR[ie] + lG[ie] + lB[ie]) / 3f;
        a3 = (lR2[ie] + lG2[ie] + lB2[ie]) / 3f;
        a4 = (lR3[ie] + lG3[ie] + lB3[ie]) / 3f;
        a5 = (lR4[ie] + lG4[ie] + lB4[ie]) / 3f;
        a6 = (lR5[ie] + lG5[ie] + lB5[ie]) / 3f;
        a7 = (lR6[ie] + lG6[ie] + lB6[ie]) / 3f;

        GL11.glColor4f(lR6[ie], lG6[ie], lB6[ie], a7);
        GL11.glVertex2f(lastx6[ie], lasty6[ie]);
        GL11.glColor4f(lR5[ie], lG5[ie], lB5[ie], a6);
        GL11.glVertex2f(lastx5[ie], lasty5[ie]);
        GL11.glColor4f(lR4[ie], lG4[ie], lB4[ie], a5);
        GL11.glVertex2f(lastx4[ie], lasty4[ie]);
        GL11.glColor4f(lR3[ie], lG3[ie], lB3[ie], a4);
        GL11.glVertex2f(lastx3[ie], lasty3[ie]);
        GL11.glColor4f(lR2[ie], lG2[ie], lB2[ie], a3);
        GL11.glVertex2f(lastx2[ie], lasty2[ie]);
        GL11.glColor4f(lR[ie], lG[ie], lB[ie], a2);
        GL11.glVertex2f(lastx[ie], lasty[ie]);
        GL11.glColor4f(R[ie] * 2, G[ie] * 2, B[ie] * 2, a1);
        GL11.glVertex2f(LIGHT_X, LIGHT_Y);

        lastx9[ie] = lastx8[ie];
        lasty9[ie] = lasty8[ie];
        lastx8[ie] = lastx7[ie];
        lasty8[ie] = lasty7[ie];
        lastx7[ie] = lastx6[ie];
        lasty7[ie] = lasty6[ie];

        lastx6[ie] = lastx5[ie];
        lasty6[ie] = lasty5[ie];
        lastx5[ie] = lastx4[ie];
        lasty5[ie] = lasty4[ie];
        lastx4[ie] = lastx3[ie];
        lasty4[ie] = lasty3[ie];
        lastx3[ie] = lastx2[ie];
        lasty3[ie] = lasty2[ie];
        lastx2[ie] = lastx[ie];
        lasty2[ie] = lasty[ie];
        //            lastx[ie] = LIGHT_X;
        //            lasty[ie] = LIGHT_Y;
        lastx[ie] = LIGHT_X;
        lasty[ie] = LIGHT_Y;

        lR9[ie] = lR8[ie];
        lG9[ie] = lG8[ie];
        lB9[ie] = lB8[ie];
        lR8[ie] = lR7[ie];
        lG8[ie] = lG7[ie];
        lB8[ie] = lB7[ie];
        lR7[ie] = lR6[ie];
        lG7[ie] = lG6[ie];
        lB7[ie] = lB6[ie];

        lR6[ie] = lR5[ie] / 1.2f;
        lG6[ie] = lG5[ie] / 1.2f;
        lB6[ie] = lB5[ie] / 1.2f;
        lR5[ie] = lR4[ie] / 1.2f;
        lG5[ie] = lG4[ie] / 1.2f;
        lB5[ie] = lB4[ie] / 1.2f;
        lR4[ie] = lR3[ie] / 1.2f;
        lG4[ie] = lG3[ie] / 1.2f;
        lB4[ie] = lB3[ie] / 1.2f;
        lR3[ie] = lR2[ie] / 1.2f;
        lG3[ie] = lG2[ie] / 1.2f;
        lB3[ie] = lB2[ie] / 1.2f;
        lR2[ie] = lR[ie] / 1.2f;
        lG2[ie] = lG[ie] / 1.2f;
        lB2[ie] = lB[ie] / 1.2f;
        lR[ie] = R[ie] * 2;
        lG[ie] = G[ie] * 2;
        lB[ie] = B[ie] * 2;
        GL11.glEnd();

    }
    GL11.glDisable(GL11.GL_BLEND); //Enable blending.
    for (int ie = 0; ie < LIGHT_POINTS; ie++) {
        //            LIGHT_X = loc_x[ie]*4+1280/2;
        //            LIGHT_Y = loc_y[ie]*4+720/2;

        LIGHT_X = loc_x[ie] * 2 + 1280 / 2;
        LIGHT_Y = loc_y[ie] * 2 + 720 / 2;

        GL11.glColorMask(true, true, true, true);
        GL20.glUseProgram(this.shaderProgram);
        GL20.glUniform2f(GL20.glGetUniformLocation(this.shaderProgram, (CharSequence) "location"), LIGHT_X,
                720.0F - LIGHT_Y);
        GL20.glUniform3f(GL20.glGetUniformLocation(this.shaderProgram, (CharSequence) "colour"), R[ie] / 5,
                G[ie] / 5, B[ie] / 5);
        GL11.glEnable(3042);
        GL11.glBlendFunc(1, 1);
        GL11.glBegin(7);
        GL11.glVertex2f(0.0F, 0.0F);
        GL11.glVertex2f(0.0F, 720.0F);
        GL11.glVertex2f(1280.0F, 720.0F);
        GL11.glVertex2f(1280.0F, 0.0F);
        GL11.glEnd();
        GL11.glDisable(3042);
        GL20.glUseProgram(0);
        //            GL11.glColor3f(lR9[ie], lG9[ie], lB9[ie]);
        //            GL11.glVertex2f(lastx9[ie], lasty9[ie]);
        //            GL11.glColor3f(lR8[ie], lG8[ie], lB8[ie]);
        //            GL11.glVertex2f(lastx8[ie], lasty8[ie]);
        //            GL11.glColor3f(lR7[ie], lG7[ie], lB7[ie]);
        //            GL11.glVertex2f(lastx7[ie], lasty7[ie]);

    }
    //

}

From source file:io.root.gfx.glutils.GL.java

License:Apache License

public static void glUseProgram(int program) {
    GL20.glUseProgram(program);
}

From source file:itdelatrisu.opsu.render.CurveRenderState.java

License:Open Source License

/**
 * Backup the current state of the relevant OpenGL state and change it to
 * what's needed to draw the curve./*  w  w w.j a v a 2s .  co m*/
 */
private RenderState startRender() {
    RenderState state = new RenderState();
    state.smoothedPoly = GL11.glGetBoolean(GL11.GL_POLYGON_SMOOTH);
    state.blendEnabled = GL11.glGetBoolean(GL11.GL_BLEND);
    state.depthEnabled = GL11.glGetBoolean(GL11.GL_DEPTH_TEST);
    state.depthWriteEnabled = GL11.glGetBoolean(GL11.GL_DEPTH_WRITEMASK);
    state.texEnabled = GL11.glGetBoolean(GL11.GL_TEXTURE_2D);
    state.texUnit = GL11.glGetInteger(GL13.GL_ACTIVE_TEXTURE);
    state.oldProgram = GL11.glGetInteger(GL20.GL_CURRENT_PROGRAM);
    state.oldArrayBuffer = GL11.glGetInteger(GL15.GL_ARRAY_BUFFER_BINDING);
    GL11.glDisable(GL11.GL_POLYGON_SMOOTH);
    GL11.glEnable(GL11.GL_BLEND);
    GL14.glBlendEquation(GL14.GL_FUNC_ADD);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glDepthMask(true);
    GL11.glDisable(GL11.GL_TEXTURE_2D);
    GL11.glEnable(GL11.GL_TEXTURE_1D);
    GL11.glBindTexture(GL11.GL_TEXTURE_1D, staticState.gradientTexture);
    GL11.glTexParameteri(GL11.GL_TEXTURE_1D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR);
    GL11.glTexParameteri(GL11.GL_TEXTURE_1D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
    GL11.glTexParameteri(GL11.GL_TEXTURE_1D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_CLAMP);

    GL20.glUseProgram(0);

    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glPushMatrix();
    GL11.glLoadIdentity();
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glPushMatrix();
    GL11.glLoadIdentity();

    return state;
}

From source file:itdelatrisu.opsu.render.CurveRenderState.java

License:Open Source License

/**
 * Restore the old OpenGL state that's backed up in {@code state}.
 * @param state the old state to restore
 *//*from w  w  w.j  av a2  s  . c o  m*/
private void endRender(RenderState state) {
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glPopMatrix();
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glPopMatrix();
    GL11.glEnable(GL11.GL_BLEND);
    GL20.glUseProgram(state.oldProgram);
    GL13.glActiveTexture(state.texUnit);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, state.oldArrayBuffer);
    if (!state.depthWriteEnabled)
        GL11.glDepthMask(false);
    if (!state.depthEnabled)
        GL11.glDisable(GL11.GL_DEPTH_TEST);
    if (state.texEnabled)
        GL11.glEnable(GL11.GL_TEXTURE_2D);
    if (state.smoothedPoly)
        GL11.glEnable(GL11.GL_POLYGON_SMOOTH);
    if (!state.blendEnabled)
        GL11.glDisable(GL11.GL_BLEND);
}

From source file:itdelatrisu.opsu.render.CurveRenderState.java

License:Open Source License

/**
 * Do the actual drawing of the curve into the currently bound framebuffer.
 * @param color the color of the curve/*from www.  j a v a 2s  .c om*/
 * @param borderColor the curve border color
 * @param curve the points along the curve
 */
private void draw_curve(Color color, Color borderColor, Vec2f[] curve) {
    staticState.initGradient();
    RenderState state = startRender();
    int vtx_buf;
    // the size is: floatsize * (position + texture coordinates) * (number of cones) * (vertices in a cone)
    FloatBuffer buff = BufferUtils
            .createByteBuffer(4 * (4 + 2) * (2 * curve.length - 1) * (NewCurveStyleState.DIVIDES + 2))
            .asFloatBuffer();
    staticState.initShaderProgram();
    vtx_buf = GL15.glGenBuffers();
    for (int i = 0; i < curve.length; ++i) {
        float x = curve[i].x;
        float y = curve[i].y;
        //if (i == 0 || i == curve.length - 1){
        fillCone(buff, x, y, NewCurveStyleState.DIVIDES);
        if (i != 0) {
            float last_x = curve[i - 1].x;
            float last_y = curve[i - 1].y;
            double diff_x = x - last_x;
            double diff_y = y - last_y;
            x = (float) (x - diff_x / 2);
            y = (float) (y - diff_y / 2);
            fillCone(buff, x, y, NewCurveStyleState.DIVIDES);
        }
    }
    buff.flip();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vtx_buf);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buff, GL15.GL_STATIC_DRAW);
    GL20.glUseProgram(staticState.program);
    GL20.glEnableVertexAttribArray(staticState.attribLoc);
    GL20.glEnableVertexAttribArray(staticState.texCoordLoc);
    GL20.glUniform1i(staticState.texLoc, 0);
    GL20.glUniform3f(staticState.colLoc, color.r, color.g, color.b);
    GL20.glUniform4f(staticState.colBorderLoc, borderColor.r, borderColor.g, borderColor.b, borderColor.a);
    //stride is 6*4 for the floats (4 bytes) (u,v)(x,y,z,w)
    //2*4 is for skipping the first 2 floats (u,v)
    GL20.glVertexAttribPointer(staticState.attribLoc, 4, GL11.GL_FLOAT, false, 6 * 4, 2 * 4);
    GL20.glVertexAttribPointer(staticState.texCoordLoc, 2, GL11.GL_FLOAT, false, 6 * 4, 0);
    for (int i = 0; i < curve.length * 2 - 1; ++i)
        GL11.glDrawArrays(GL11.GL_TRIANGLE_FAN, i * (NewCurveStyleState.DIVIDES + 2),
                NewCurveStyleState.DIVIDES + 2);
    GL20.glDisableVertexAttribArray(staticState.texCoordLoc);
    GL20.glDisableVertexAttribArray(staticState.attribLoc);
    GL15.glDeleteBuffers(vtx_buf);
    endRender(state);
}

From source file:jpcsp.graphics.RE.RenderingEngineLwjgl.java

License:Open Source License

@Override
public void useProgram(int program) {
    GL20.glUseProgram(program);
}

From source file:kubex.KubexGame.java

License:Creative Commons License

/**
 * Inits the game resources (Images, pools, shaders, objects, etc.)
 *///from w ww  .j av  a2s  . c  o m
private void initResources() throws IOException {
    //Inits static pools
    FloatBufferPool.init(Chunk.CHUNK_DIMENSION * Chunk.CHUNK_DIMENSION * Chunk.CHUNK_DIMENSION * 2 * 6 * 6, 20);
    ByteArrayPool.init(Chunk.CHUNK_DIMENSION,
            (settings.RENDER_DISTANCE * 2 + 1) * World.HEIGHT * (settings.RENDER_DISTANCE * 2 + 1) * 2);
    glEnable(GL11.GL_CULL_FACE);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL11.GL_BLEND);
    glClearColor(0.6f, 0.8f, 1.0f, 0f);

    //Inits shaders
    GL20.glUseProgram(0);
    textManager = new GlobalTextManager();
    this.DVSP = new DepthVoxelShaderProgram(true);
    this.VSP = new TerrainVoxelShaderProgram(true);
    this.HSP = new HudShaderProgram(true);
    this.DTSP = this.settings.SHADOWS_ENABLED ? new DeferredTerrainShaderProgram(true)
            : new DeferredTerrainUnshadowShaderProgram(true);
    this.DRSP = this.settings.REFLECTIONS_ENABLED ? new DeferredReflectionsShaderProgram(true)
            : new DeferredNoReflectionsShaderProgram(true);
    this.DUTSP = this.settings.SHADOWS_ENABLED ? new DeferredUnderwaterTerrainShaderProgram(true)
            : new DeferredUnderwaterUnshadowTerrainShaderProgram(true);
    this.DUFSP = new DeferredUnderwaterFinalShaderProgram(true);

    //Inits essential objects
    this.TM = new TimeManager();
    this.cam = new Camera(CAMERA_NEAR, CAMERA_FAR, 80f, (float) (X_RES * 3 / 4) / Y_RES); //FOV more width than height BY DESIGN, so blocks looks more "plane". Looks nicer that way, i think.
    this.camInvProjEnv = new CameraInverseProjEnvelope(this.cam);
    this.shadowsManager = new ShadowsManager(SHADOW_SPLITS, this.cam);
    this.liquidRenderer = new DepthPeelingLiquidRenderer(LIQUID_LAYERS);

    this.sunCam = new Camera(new Matrix4f());
    this.sunCam.moveTo(0, 5, 0);
    this.sunCam.setPitch(0);

    this.sky = new Sky(cam, this.sunCam);
    File mapRoute = new File(this.settings.MAP_ROUTE);
    mapRoute.mkdir(); //Creates the maps folder
    this.fileManager = new FileManager(mapRoute, settings.RENDER_DISTANCE);
    this.fileManager.getSettingsFromFile(settings); //Reads default settings from settings file.
    this.world = new World(this.VSP, this.cam, this.sunCam, this.shadowsManager, this.sky, fileManager,
            this.settings);
    this.finalDrawManager = new FinalDrawManager(this.world, this.sky, this.shadowsManager, this.liquidRenderer,
            this.camInvProjEnv.getInvProjMatrix(), CAMERA_NEAR, CAMERA_FAR);
    this.hud = new Hud(this.HSP, X_RES, Y_RES);

    //Load textures here
    glActiveTexture(TEXTURE_FETCH[TILES_TEXTURE_LOCATION]);

    //GL_NEAREST for that blocky look
    //loads the tiles textures into a array
    tilesTexture = Util.loadTextureAtlasIntoTextureArray(FileLoader.loadTileImages(), GL11.GL_NEAREST,
            GL11.GL_NEAREST_MIPMAP_LINEAR, true, settings.ANISOTROPIC_FILTERING_ENABLED);

    Util.loadPNGTexture(FileLoader.loadWaterNormalImage(), TEXTURE_FETCH[WATER_NORMAL_TEXTURE_LOCATION]); //loads the water normal texture

    glActiveTexture(GL_TEXTURE0);
    nightDomeTexture = TextureLoader.getTexture("JPG",
            ResourceLoader.getResourceAsStream("images/nightdome.jpg")); //loads the nightdome

    //Without this, text printing using Slick-Utils doesn't work. Seems it still uses some old mode OpenGL.
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glShadeModel(GL11.GL_SMOOTH);
    GL11.glDisable(GL11.GL_DEPTH_TEST);
    GL11.glDisable(GL11.GL_LIGHTING);
    GL11.glClearDepth(1);
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    GL11.glViewport(0, 0, X_RES, Y_RES);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();
    GL11.glOrtho(0, X_RES, Y_RES, 0, 1, -1);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);

    //First pass deferred rendering
    this.baseFbo = glGenFramebuffers();
    glBindFramebuffer(GL_FRAMEBUFFER, this.baseFbo);

    int colorTexture = glGenTextures();
    int brightnessNormalsTexture = glGenTextures();

    //Creates and inits the base color texture as a RGB texture
    glActiveTexture(TEXTURE_FETCH[BASEFBO_COLOR_TEXTURE_LOCATION]);
    glBindTexture(GL_TEXTURE_2D, colorTexture);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, X_RES, Y_RES, 0, GL_RGB, GL_UNSIGNED_BYTE, (FloatBuffer) null);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    GL30.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorTexture, 0);

    //Creates and inits the brightness and normals texture as a RGBA texture
    glActiveTexture(TEXTURE_FETCH[BASEFBO_NORMALS_BRIGHTNESS_TEXTURE_LOCATION]);
    glBindTexture(GL_TEXTURE_2D, brightnessNormalsTexture);
    glTexImage2D(GL_TEXTURE_2D, 0, GL11.GL_RGBA, X_RES, Y_RES, 0, GL11.GL_RGBA, GL_UNSIGNED_BYTE,
            (FloatBuffer) null);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    GL30.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, brightnessNormalsTexture,
            0);

    //The depth buffer of this FBO will be a texture, too. This will make depth sorting slower but we will be able to access depth values later.
    int baseFboDepth = glGenTextures();

    glActiveTexture(TEXTURE_FETCH[BASEFBO_DEPTH_TEXTURE_LOCATION]);
    glBindTexture(GL_TEXTURE_2D, baseFboDepth);
    glTexImage2D(GL_TEXTURE_2D, 0, GL14.GL_DEPTH_COMPONENT24, X_RES, Y_RES, 0, GL_DEPTH_COMPONENT,
            GL_UNSIGNED_INT, (FloatBuffer) null);
    System.out.println("ERR" + GL11.glGetError());
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);
    GL30.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, baseFboDepth, 0); //Set the depth texture as the default render depth target

    IntBuffer drawBuffers = BufferUtils.createIntBuffer(2); //Drawing to 2 textures

    drawBuffers.put(GL_COLOR_ATTACHMENT0);
    drawBuffers.put(GL_COLOR_ATTACHMENT1);

    drawBuffers.flip();
    GL20.glDrawBuffers(drawBuffers);

    //Second pass deferred rendering
    this.deferredFbo = glGenFramebuffers();
    glBindFramebuffer(GL_FRAMEBUFFER, this.deferredFbo);

    int deferredColorTex = glGenTextures();

    //Only uses one texture, a RGBA color texture
    glActiveTexture(TEXTURE_FETCH[DEFERREDFBO_COLOR_TEXTURE_LOCATION]);
    glBindTexture(GL_TEXTURE_2D, deferredColorTex);
    glTexImage2D(GL_TEXTURE_2D, 0, GL11.GL_RGBA, X_RES, Y_RES, 0, GL11.GL_RGBA, GL_UNSIGNED_BYTE,
            (FloatBuffer) null);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    GL30.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, deferredColorTex, 0);

    drawBuffers = BufferUtils.createIntBuffer(1);

    drawBuffers.put(GL_COLOR_ATTACHMENT0);

    drawBuffers.flip();
    GL20.glDrawBuffers(drawBuffers);

    //If shadows are enabled, we init each shadow map texture, placed in an array
    if (this.settings.SHADOWS_ENABLED) {

        int shadowTexture = glGenTextures();

        glActiveTexture(TEXTURE_FETCH[SHADOW_TEXTURE_LOCATION]);

        glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, shadowTexture);
        //Creates a texture array to place the shadows in
        GL12.glTexImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, GL14.GL_DEPTH_COMPONENT16, SHADOW_XRES, SHADOW_YRES,
                this.shadowsManager.getNumberSplits(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT,
                (FloatBuffer) null);
        System.out.println("ERR" + GL11.glGetError());
        glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); //Needed to do hardware PCF comparisons via shader
        glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); //Needed to do hardware PCF comparisons via shader
        glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL14.GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE); //Needed to do hardware PCF comparisons via shader

        this.shadowFbos = new int[this.shadowsManager.getNumberSplits()];
        //Creates one framebuffer per shadow map
        for (int i = 0; i < this.shadowsManager.getNumberSplits(); i++) {
            this.shadowFbos[i] = glGenFramebuffers();
            glBindFramebuffer(GL_FRAMEBUFFER, this.shadowFbos[i]);
            GL30.glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, shadowTexture, 0, i); //Each framebuffer will have one texture layer (one index of the texture array created before) assigned as render target

            drawBuffers = BufferUtils.createIntBuffer(0);

            GL20.glDrawBuffers(drawBuffers);

        }
    }

    //Liquid layers depth generation. Equal to the shadows depth textures generation.
    int liquidLayers = glGenTextures();

    glActiveTexture(TEXTURE_FETCH[LIQUIDLAYERS_TEXTURE_LOCATION]);
    glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, liquidLayers);
    GL12.glTexImage3D(GL30.GL_TEXTURE_2D_ARRAY, 0, GL14.GL_DEPTH_COMPONENT24, X_RES, Y_RES,
            this.liquidRenderer.getNumLayers(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, (FloatBuffer) null);

    glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); //We will compare manually the depth in the shader, we will not perform PCF of any sort in this case
    glTexParameteri(GL30.GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST);

    int currentLiquidNormalTex = glGenTextures();

    glActiveTexture(KubexGame.TEXTURE_FETCH[KubexGame.CURRENT_LIQUID_NORMAL_TEXTURE_LOCATION]);
    glBindTexture(GL_TEXTURE_2D, currentLiquidNormalTex);
    glTexImage2D(GL_TEXTURE_2D, 0, GL11.GL_RGB, X_RES, Y_RES, 0, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE,
            (FloatBuffer) null);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

    this.liquidRenderer.initResources(liquidLayers, currentLiquidNormalTex);

    //Reset active texture and fbo to the default
    glActiveTexture(GL13.GL_TEXTURE0);
    glBindFramebuffer(GL_FRAMEBUFFER, 0);
}

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

License:GNU General Public License

/**
 * Starts use of the program//from ww w.jav a  2 s  .  co  m
 * @param program The index/id of the program
 */
public void startUse(int program) {
    if (has_opengl2) {
        GL20.glUseProgram(program);
    } else if (has_arb) {
        ARBShaderObjects.glUseProgramObjectARB(program);
    } else
        System.out.println("No shader support, can't enable");
}