Example usage for org.lwjgl.opengl GL11 glEnd

List of usage examples for org.lwjgl.opengl GL11 glEnd

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL11 glEnd.

Prototype

public static native void glEnd();

Source Link

Document

Ends the definition of vertex attributes of a sequence of primitives to be transferred to the GL.

Usage

From source file:kuake2.render.lwjgl.Main.java

License:Open Source License

/**
 * GL_DrawParticles// w  ww.  j  a  va2s .  c o m
 */
void GL_DrawParticles(int num_particles) {
    float origin_x, origin_y, origin_z;

    Math3D.VectorScale(vup, 1.5f, up);
    Math3D.VectorScale(vright, 1.5f, right);

    GL_Bind(r_particletexture.texnum);
    GL11.glDepthMask(false); // no z buffering
    GL11.glEnable(GL11.GL_BLEND);
    GL_TexEnv(GL11.GL_MODULATE);

    GL11.glBegin(GL11.GL_TRIANGLES);

    FloatBuffer sourceVertices = particle_t.vertexArray;
    IntBuffer sourceColors = particle_t.colorArray;
    float scale;
    int color;
    for (int j = 0, i = 0; i < num_particles; i++) {
        origin_x = sourceVertices.get(j++);
        origin_y = sourceVertices.get(j++);
        origin_z = sourceVertices.get(j++);

        // hack a scale up to keep particles from disapearing
        scale = (origin_x - r_origin[0]) * vpn[0] + (origin_y - r_origin[1]) * vpn[1]
                + (origin_z - r_origin[2]) * vpn[2];

        scale = (scale < 20) ? 1 : 1 + scale * 0.004f;

        color = sourceColors.get(i);

        GL11.glColor4ub((byte) ((color) & 0xFF), (byte) ((color >> 8) & 0xFF), (byte) ((color >> 16) & 0xFF),
                (byte) ((color >>> 24)));
        // first vertex
        GL11.glTexCoord2f(0.0625f, 0.0625f);
        GL11.glVertex3f(origin_x, origin_y, origin_z);
        // second vertex
        GL11.glTexCoord2f(1.0625f, 0.0625f);
        GL11.glVertex3f(origin_x + up[0] * scale, origin_y + up[1] * scale, origin_z + up[2] * scale);
        // third vertex
        GL11.glTexCoord2f(0.0625f, 1.0625f);
        GL11.glVertex3f(origin_x + right[0] * scale, origin_y + right[1] * scale, origin_z + right[2] * scale);
    }
    GL11.glEnd();

    GL11.glDisable(GL11.GL_BLEND);
    GL11.glColor4f(1, 1, 1, 1);
    GL11.glDepthMask(true); // back to normal Z buffering
    GL_TexEnv(GL11.GL_REPLACE);
}

From source file:kuake2.render.lwjgl.Main.java

License:Open Source License

/**
 * R_PolyBlend//from  w  w w.j  a  v  a2s . c om
 */
void R_PolyBlend() {
    if (gl_polyblend.value == 0.0f)
        return;

    if (v_blend[3] == 0.0f)
        return;

    GL11.glDisable(GL11.GL_ALPHA_TEST);
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glDisable(GL11.GL_DEPTH_TEST);
    GL11.glDisable(GL11.GL_TEXTURE_2D);

    GL11.glLoadIdentity();

    // FIXME: get rid of these
    GL11.glRotatef(-90, 1, 0, 0); // put Z going up
    GL11.glRotatef(90, 0, 0, 1); // put Z going up

    GL11.glColor4f(v_blend[0], v_blend[1], v_blend[2], v_blend[3]);

    GL11.glBegin(GL11.GL_QUADS);

    GL11.glVertex3f(10, 100, 100);
    GL11.glVertex3f(10, -100, 100);
    GL11.glVertex3f(10, -100, -100);
    GL11.glVertex3f(10, 100, -100);
    GL11.glEnd();

    GL11.glDisable(GL11.GL_BLEND);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glEnable(GL11.GL_ALPHA_TEST);

    GL11.glColor4f(1, 1, 1, 1);
}

From source file:kuake2.render.lwjgl.Main.java

License:Open Source License

/**
 * R_DrawBeam//from   w  ww.  j a v  a 2s  .com
 */
void R_DrawBeam(entity_t e) {
    oldorigin[0] = e.oldorigin[0];
    oldorigin[1] = e.oldorigin[1];
    oldorigin[2] = e.oldorigin[2];

    origin[0] = e.origin[0];
    origin[1] = e.origin[1];
    origin[2] = e.origin[2];

    normalized_direction[0] = direction[0] = oldorigin[0] - origin[0];
    normalized_direction[1] = direction[1] = oldorigin[1] - origin[1];
    normalized_direction[2] = direction[2] = oldorigin[2] - origin[2];

    if (Math3D.VectorNormalize(normalized_direction) == 0.0f)
        return;

    Math3D.PerpendicularVector(perpvec, normalized_direction);
    Math3D.VectorScale(perpvec, e.frame / 2, perpvec);

    for (int i = 0; i < 6; i++) {
        Math3D.RotatePointAroundVector(start_points[i], normalized_direction, perpvec,
                (360.0f / NUM_BEAM_SEGS) * i);

        Math3D.VectorAdd(start_points[i], origin, start_points[i]);
        Math3D.VectorAdd(start_points[i], direction, end_points[i]);
    }

    GL11.glDisable(GL11.GL_TEXTURE_2D);
    GL11.glEnable(GL11.GL_BLEND);
    GL11.glDepthMask(false);

    float r = (d_8to24table[e.skinnum & 0xFF]) & 0xFF;
    float g = (d_8to24table[e.skinnum & 0xFF] >> 8) & 0xFF;
    float b = (d_8to24table[e.skinnum & 0xFF] >> 16) & 0xFF;

    r *= 1 / 255.0f;
    g *= 1 / 255.0f;
    b *= 1 / 255.0f;

    GL11.glColor4f(r, g, b, e.alpha);

    GL11.glBegin(GL11.GL_TRIANGLE_STRIP);

    float[] v;

    for (int i = 0; i < NUM_BEAM_SEGS; i++) {
        v = start_points[i];
        GL11.glVertex3f(v[0], v[1], v[2]);
        v = end_points[i];
        GL11.glVertex3f(v[0], v[1], v[2]);
        v = start_points[(i + 1) % NUM_BEAM_SEGS];
        GL11.glVertex3f(v[0], v[1], v[2]);
        v = end_points[(i + 1) % NUM_BEAM_SEGS];
        GL11.glVertex3f(v[0], v[1], v[2]);
    }
    GL11.glEnd();

    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glDisable(GL11.GL_BLEND);
    GL11.glDepthMask(true);
}

From source file:kuake2.render.lwjgl.Mesh.java

License:Open Source License

/**
 * GL_DrawAliasShadow/*from ww w  . j a v a  2 s .  c  o  m*/
 */
void GL_DrawAliasShadow(qfiles.dmdl_t paliashdr, int posenum) {
    float lheight = currententity.origin[2] - lightspot[2];
    // qfiles.daliasframe_t frame = paliashdr.aliasFrames[currententity.frame];
    int[] order = paliashdr.glCmds;
    float height = -lheight + 1.0f;

    int orderIndex = 0;
    int index = 0;

    // TODO shadow drawing with vertex arrays

    int count;
    while (true) {
        // get the vertex count and primitive type
        count = order[orderIndex++];
        if (count == 0)
            break; // done
        if (count < 0) {
            count = -count;
            GL11.glBegin(GL11.GL_TRIANGLE_FAN);
        } else
            GL11.glBegin(GL11.GL_TRIANGLE_STRIP);

        do {
            index = order[orderIndex + 2] * 3;
            point[0] = vertexArrayBuf.get(index);
            point[1] = vertexArrayBuf.get(index + 1);
            point[2] = vertexArrayBuf.get(index + 2);

            point[0] -= shadevector[0] * (point[2] + lheight);
            point[1] -= shadevector[1] * (point[2] + lheight);
            point[2] = height;
            GL11.glVertex3f(point[0], point[1], point[2]);

            orderIndex += 3;

        } while (--count != 0);

        GL11.glEnd();
    }
}

From source file:kuake2.render.lwjgl.Surf.java

License:Open Source License

/**
 * R_DrawTriangleOutlines//ww w .  ja va2  s . c  om
 */
void R_DrawTriangleOutlines() {
    if (gl_showtris.value == 0)
        return;

    GL11.glDisable(GL11.GL_TEXTURE_2D);
    GL11.glDisable(GL11.GL_DEPTH_TEST);
    GL11.glColor4f(1, 1, 1, 1);

    msurface_t surf;
    glpoly_t p;
    int j;
    for (int i = 0; i < MAX_LIGHTMAPS; i++) {
        for (surf = gl_lms.lightmap_surfaces[i]; surf != null; surf = surf.lightmapchain) {
            for (p = surf.polys; p != null; p = p.chain) {
                for (j = 2; j < p.numverts; j++) {
                    GL11.glBegin(GL11.GL_LINE_STRIP);
                    GL11.glVertex3f(p.x(0), p.y(0), p.z(0));
                    GL11.glVertex3f(p.x(j - 1), p.y(j - 1), p.z(j - 1));
                    GL11.glVertex3f(p.x(j), p.y(j), p.z(j));
                    GL11.glVertex3f(p.x(0), p.y(0), p.z(0));
                    GL11.glEnd();
                }
            }
        }
    }

    GL11.glEnable(GL11.GL_DEPTH_TEST);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
}

From source file:kuake2.render.lwjgl.Warp.java

License:Open Source License

/**
 * EmitWaterPolys/*from w  w  w.  j a  va  2  s .c  om*/
 * Does a water warp on the pre-fragmented glpoly_t chain
 */
void EmitWaterPolys(msurface_t fa) {
    float rdt = r_newrefdef.time;

    float scroll;
    if ((fa.texinfo.flags & Defines.SURF_FLOWING) != 0)
        scroll = -64 * ((r_newrefdef.time * 0.5f) - (int) (r_newrefdef.time * 0.5f));
    else
        scroll = 0;

    int i;
    float s, t, os, ot;
    glpoly_t p, bp;
    for (bp = fa.polys; bp != null; bp = bp.next) {
        p = bp;

        GL11.glBegin(GL11.GL_TRIANGLE_FAN);
        for (i = 0; i < p.numverts; i++) {
            os = p.s1(i);
            ot = p.t1(i);

            s = os + Warp.SIN[(int) ((ot * 0.125f + r_newrefdef.time) * TURBSCALE) & 255];
            s += scroll;
            s *= (1.0f / 64);

            t = ot + Warp.SIN[(int) ((os * 0.125f + rdt) * TURBSCALE) & 255];
            t *= (1.0f / 64);

            GL11.glTexCoord2f(s, t);
            GL11.glVertex3f(p.x(i), p.y(i), p.z(i));
        }
        GL11.glEnd();
    }
}

From source file:kuake2.render.lwjgl.Warp.java

License:Open Source License

/**
 * R_DrawSkyBox/*www .j  a  v  a  2  s .  co m*/
 */
void R_DrawSkyBox() {
    int i;

    if (skyrotate != 0) { // check for no sky at all
        for (i = 0; i < 6; i++)
            if (skymins[0][i] < skymaxs[0][i] && skymins[1][i] < skymaxs[1][i])
                break;
        if (i == 6)
            return; // nothing visible
    }

    GL11.glPushMatrix();
    GL11.glTranslatef(r_origin[0], r_origin[1], r_origin[2]);
    GL11.glRotatef(r_newrefdef.time * skyrotate, skyaxis[0], skyaxis[1], skyaxis[2]);

    for (i = 0; i < 6; i++) {
        if (skyrotate != 0) { // hack, forces full sky to draw when rotating
            skymins[0][i] = -1;
            skymins[1][i] = -1;
            skymaxs[0][i] = 1;
            skymaxs[1][i] = 1;
        }

        if (skymins[0][i] >= skymaxs[0][i] || skymins[1][i] >= skymaxs[1][i])
            continue;

        GL_Bind(sky_images[skytexorder[i]].texnum);

        GL11.glBegin(GL11.GL_QUADS);
        MakeSkyVec(skymins[0][i], skymins[1][i], i);
        MakeSkyVec(skymins[0][i], skymaxs[1][i], i);
        MakeSkyVec(skymaxs[0][i], skymaxs[1][i], i);
        MakeSkyVec(skymaxs[0][i], skymins[1][i], i);
        GL11.glEnd();
    }
    GL11.glPopMatrix();
}

From source file:launcher.Main.java

private void drawWorld() {
    final int widthFit = (SCREEN_WIDTH / world.getBlockWidth()) + 1;
    final int heightFit = (SCREEN_HEIGHT / world.getBlockWidth()) + 1;

    final int cX = Math.min(widthFit, world.getSizeX());
    final int cY = Math.min(heightFit, world.getSizeY());//assuming the world is not a jagged grid...
    // Clear the screen and depth buffer

    Point playerPoint = world.getPlayerLocationInGrid(player);

    final int startX = playerPoint.getX() - (int) Math.floor(widthFit / 2);
    final int startY = playerPoint.getY() - (int) Math.floor(heightFit / 2);

    final int w = world.getBlockWidth();
    final int maxDamage = 500;
    final double damageProportion = w * 0.5 / maxDamage;
    for (int i = 0; i < cX + 1; i++) {
        for (int j = 0; j < cY + 1; j++) {
            Block block = world.getBlock(i + startX, j + startY);
            byte[] c = block.getColor();
            GL11.glColor3ub(c[0], c[1], c[2]);

            int left = i * w - (w / 2);
            int top = j * w - (w / 2);
            int right = left + w;
            int bottom = top + w;
            // draw quad block thing
            GL11.glBegin(GL11.GL_QUADS);
            {// ww  w  .j a va 2 s  .c o  m
                GL11.glVertex2f(left, top);
                GL11.glVertex2f(right, top);
                GL11.glVertex2f(right, bottom);
                GL11.glVertex2f(left, bottom);
            }
            GL11.glEnd();

            final int damage = block.getDamage();
            if (damage < maxDamage && !(block instanceof AirBlock)) {
                //wtf is dit?
                int tmp = (int) Math.ceil((maxDamage / (damage + 1)) * 0.1f) + 2;
                int centerX = (int) (left + w * 0.5);
                int centerY = (int) (top + w * 0.5);
                int visibleDamage = (int) Math.ceil(damage * damageProportion);
                //gray
                GL11.glColor3ub((byte) 80, (byte) 80, (byte) 80);

                GL11.glBegin(GL11.GL_QUADS);
                {
                    GL11.glVertex2f(left, top);
                    GL11.glVertex2f(left + tmp, top);
                    GL11.glVertex2f(centerX - visibleDamage, centerY - visibleDamage);
                    GL11.glVertex2f(left, top + tmp);
                }
                GL11.glEnd();

                GL11.glBegin(GL11.GL_QUADS);
                {
                    GL11.glVertex2f(right, top);
                    GL11.glVertex2f(right, top + tmp);
                    GL11.glVertex2f(centerX + visibleDamage, centerY - visibleDamage);
                    GL11.glVertex2f(right - tmp, top);
                }
                GL11.glEnd();

                GL11.glBegin(GL11.GL_QUADS);
                {
                    GL11.glVertex2f(right, bottom);
                    GL11.glVertex2f(right - tmp, bottom);
                    GL11.glVertex2f(centerX + visibleDamage, centerY + visibleDamage);
                    GL11.glVertex2f(right, bottom - tmp);
                }
                GL11.glEnd();

                GL11.glBegin(GL11.GL_QUADS);
                {
                    GL11.glVertex2f(left, bottom);
                    GL11.glVertex2f(left, bottom - tmp);
                    GL11.glVertex2f(centerX - visibleDamage, centerY + visibleDamage);
                    GL11.glVertex2f(left + tmp, bottom);
                }
                GL11.glEnd();
            }
        }
    }
}

From source file:launcher.Main.java

private void drawPlayer() {
    //orangered, why not?
    GL11.glColor3ub((byte) 255, (byte) 69, (byte) 0);

    final int w = player.getWidth() / 2;
    GL11.glBegin(GL11.GL_QUADS);//from  w  w w. j a v  a2  s  . c  o  m
    {
        GL11.glVertex2f(SCREEN_CENTER_X - w, SCREEN_CENTER_Y - w);
        GL11.glVertex2f(SCREEN_CENTER_X + w, SCREEN_CENTER_Y - w);
        GL11.glVertex2f(SCREEN_CENTER_X + w, SCREEN_CENTER_Y + w);
        GL11.glVertex2f(SCREEN_CENTER_X - w, SCREEN_CENTER_Y + w);
    }
    GL11.glEnd();

    //draw drill
    switch (player.getDirection()) {
    case IDLE:
        break;
    case LEFT:
        GL11.glBegin(GL11.GL_TRIANGLES); {
        GL11.glVertex2f(SCREEN_CENTER_X - w, SCREEN_CENTER_Y - w);
        GL11.glVertex2f(SCREEN_CENTER_X - w * 1.5f, SCREEN_CENTER_Y);
        GL11.glVertex2f(SCREEN_CENTER_X - w, SCREEN_CENTER_Y + w);
    }
        GL11.glEnd();
        break;
    case RIGHT:
        GL11.glBegin(GL11.GL_TRIANGLES); {
        GL11.glVertex2f(SCREEN_CENTER_X + w, SCREEN_CENTER_Y - w);
        GL11.glVertex2f(SCREEN_CENTER_X + w * 1.5f, SCREEN_CENTER_Y);
        GL11.glVertex2f(SCREEN_CENTER_X + w, SCREEN_CENTER_Y + w);
    }
        GL11.glEnd();
        break;
    case DOWN:
        GL11.glBegin(GL11.GL_TRIANGLES); {
        GL11.glVertex2f(SCREEN_CENTER_X - w, SCREEN_CENTER_Y + w);
        GL11.glVertex2f(SCREEN_CENTER_X, SCREEN_CENTER_Y + w * 1.5f);
        GL11.glVertex2f(SCREEN_CENTER_X + w, SCREEN_CENTER_Y + w);
    }
        GL11.glEnd();
        break;
    case UP:
        GL11.glBegin(GL11.GL_TRIANGLES); {
        GL11.glVertex2f(SCREEN_CENTER_X + w, SCREEN_CENTER_Y - w);
        GL11.glVertex2f(SCREEN_CENTER_X, SCREEN_CENTER_Y - w * 1.5f);
        GL11.glVertex2f(SCREEN_CENTER_X - w, SCREEN_CENTER_Y - w);
    }
        GL11.glEnd();
        break;
    default:
        break;
    }
}

From source file:lwjgl29.GlobalClass.Quad.java

@Override
public void draw() {
    GL11.glColor3f(this.r, this.g, this.b);
    GL11.glBegin(GL11.GL_POLYGON);// w  w  w  .  j  av  a  2 s  . c  om
    //position de dpart
    GL11.glVertex2f(this.x, this.y);
    //dessin des 3 cots
    GL11.glVertex2f(this.x + this.width, this.y);
    GL11.glVertex2f(this.x + this.width, this.y + this.height);
    GL11.glVertex2f(this.x, this.y + this.height);
    GL11.glEnd();
    this.move();
}