List of usage examples for org.lwjgl.opengl GL20 glUseProgram
public static void glUseProgram(@NativeType("GLuint") int program)
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"); }