Example usage for com.badlogic.gdx.graphics GL20 GL_TRIANGLES

List of usage examples for com.badlogic.gdx.graphics GL20 GL_TRIANGLES

Introduction

In this page you can find the example usage for com.badlogic.gdx.graphics GL20 GL_TRIANGLES.

Prototype

int GL_TRIANGLES

To view the source code for com.badlogic.gdx.graphics GL20 GL_TRIANGLES.

Click Source Link

Usage

From source file:airfoil.Main.java

License:Open Source License

protected final void renderMeshTriangles(Mesh mesh) {
    final ShaderProgram bodyShader = this.bodyShader;
    if (null != bodyShader) {

        if (null != mesh) {
            final Matrix4 camera = this.getCamera();

            bodyShader.begin();/*from w w  w  .ja  va2  s.c  om*/

            bodyShader.setUniformMatrix("u_camera", camera);
            bodyShader.setUniformf("u_color", Color.YELLOW);
            bodyShader.setUniformf("u_light", LightNormal);
            bodyShader.setUniformf("u_mat", Material);

            mesh.render(bodyShader, GL20.GL_TRIANGLES);

            bodyShader.end();
        }
    }
}

From source file:com.andgate.ikou.render.FloorRender.java

License:Open Source License

@Override
public void getRenderables(Array<Renderable> renderables, Pool<Renderable> pool) {
    for (int i = 0; i < sectorMeshes.length; i++) {
        for (int j = 0; j < sectorMeshes[i].length; j++) {
            Mesh mesh = sectorMeshes[i][j].getMesh();

            if (inFrustum(i, j) && (mesh != null)) {
                Renderable renderable = pool.obtain();
                renderable.material = TileStack.TILE_MATERIAL;
                renderable.meshPartOffset = 0;
                renderable.meshPartSize = mesh.getNumIndices();
                renderable.primitiveType = GL20.GL_TRIANGLES;
                renderable.mesh = mesh;/*from w ww  .j  a  v a 2s.c  o  m*/
                renderables.add(renderable);

                renderable.worldTransform.set(floorTransform);
            }
        }
    }
}

From source file:com.andgate.ikou.render.PlayerRender.java

License:Open Source License

@Override
public void getRenderables(Array<Renderable> renderables, Pool<Renderable> pool) {
    Renderable renderable = pool.obtain();
    renderable.material = material;/*from  w ww  . j  a  v a  2s  . c o  m*/
    renderable.meshPartOffset = 0;
    renderable.meshPartSize = tileMesh.getMesh().getNumIndices();
    renderable.primitiveType = GL20.GL_TRIANGLES;
    renderable.mesh = tileMesh.getMesh();
    renderables.add(renderable);

    renderable.worldTransform.set(tileMesh.getTransform());
}

From source file:com.anythingmachine.gdxwrapper.SpriteCache.java

License:Apache License

/** Draws all the images defined for the specified cache ID. */
public void draw(int cacheID) {
    if (!drawing)
        throw new IllegalStateException("SpriteCache.begin must be called before draw.");

    Cache cache = caches.get(cacheID);//from www  . j a  v  a2s .com
    int verticesPerImage = mesh.getNumIndices() > 0 ? 4 : 6;
    int offset = cache.offset / (verticesPerImage * VERTEX_SIZE) * 6;
    Texture[] textures = cache.textures;
    int[] counts = cache.counts;
    for (int i = 0, n = cache.textureCount; i < n; i++) {
        int count = counts[i];
        textures[i].bind();
        if (customShader != null)
            mesh.render(customShader, GL20.GL_TRIANGLES, offset, count);
        else
            mesh.render(shader, GL20.GL_TRIANGLES, offset, count);
        offset += count;
    }
}

From source file:com.anythingmachine.gdxwrapper.SpriteCache.java

License:Apache License

/**
 * Draws a subset of images defined for the specified cache ID.
 * //from  w  w  w .  jav a  2  s .c  om
 * @param offset
 *            The first image to render.
 * @param length
 *            The number of images from the first image (inclusive) to
 *            render.
 */
public void draw(int cacheID, int offset, int length) {
    if (!drawing)
        throw new IllegalStateException("SpriteCache.begin must be called before draw.");

    Cache cache = caches.get(cacheID);
    offset = offset * 6 + cache.offset;
    length *= 6;
    Texture[] textures = cache.textures;
    int[] counts = cache.counts;
    for (int i = 0, n = cache.textureCount; i < n; i++) {
        textures[i].bind();
        int count = counts[i];
        if (count > length) {
            i = n;
            count = length;
        } else
            length -= count;
        if (customShader != null)
            mesh.render(customShader, GL20.GL_TRIANGLES, offset, count);
        else
            mesh.render(shader, GL20.GL_TRIANGLES, offset, count);
        offset += count;
    }
}

From source file:com.badlogic.gdx.tests.dragome.examples.GearsDemo.java

private static Model gear(ModelBuilder builder, float inner_radius, float outer_radius, float width, int teeth,
        float tooth_depth, Color color) {
    // Ported from https://github.com/jeffboody/gears2/blob/master/project/jni/gear.c by xpenatan
    int i;/*  ww  w  .j a v  a 2  s  .c  o m*/
    float r0, r1, r2, dz;
    float angle, da;
    float u, v, len;

    float[] ar = new float[4];

    VertexInfo vertTmp1 = new VertexInfo();

    r0 = inner_radius;
    r1 = outer_radius - tooth_depth / 2.0f;
    r2 = outer_radius + tooth_depth / 2.0f;

    dz = 0.5f * width;

    builder.begin();

    MeshPartBuilder part = null;

    // draw front face
    // GL_TRIANGLE_STRIP
    part = builder.part("gear", GL20.GL_TRIANGLE_STRIP, Usage.Position | Usage.Normal,
            new Material(ColorAttribute.createDiffuse(color)));
    da = 2.0f * (float) Math.PI / teeth / 4.0f;
    for (i = 0; i < teeth; i++) {
        angle = i * 2.0f * (float) Math.PI / teeth;
        gear_angle(i, teeth, ar);
        part.index(
                part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(ar[0]), r0 * (float) Math.sin(ar[0]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(ar[0]), r0 * (float) Math.sin(ar[0]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), dz)));
    }
    part.index(part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(0.0f), r0 * (float) Math.sin(0.0f), dz)));
    part.index(part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(0.0f), r1 * (float) Math.sin(0.0f), dz)));

    // draw front sides of teeth
    // GL_TRIANGLES
    part = builder.part("gear", GL20.GL_TRIANGLES, Usage.Position | Usage.Normal,
            new Material(ColorAttribute.createDiffuse(color)));
    for (i = 0; i < teeth; i++) {
        gear_angle(i, teeth, ar);
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[1]), r2 * (float) Math.sin(ar[1]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[2]), r2 * (float) Math.sin(ar[2]), dz)));

        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[2]), r2 * (float) Math.sin(ar[2]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), dz)));
    }

    // draw back face
    // GL_TRIANGLE_STRIP
    part = builder.part("gear", GL20.GL_TRIANGLE_STRIP, Usage.Position | Usage.Normal,
            new Material(ColorAttribute.createDiffuse(color)));
    for (i = 0; i < teeth; i++) {
        gear_angle(i, teeth, ar);

        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(ar[0]), r0 * (float) Math.sin(ar[0]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(ar[0]), r0 * (float) Math.sin(ar[0]), -dz)));
    }
    part.index(part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(0.0f), r1 * (float) Math.sin(0.0f), -dz)));
    part.index(part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(0.0f), r0 * (float) Math.sin(0.0f), -dz)));

    // draw back sides of teeth
    // GL_TRIANGLES
    part = builder.part("gear", GL20.GL_TRIANGLES, Usage.Position | Usage.Normal,
            new Material(ColorAttribute.createDiffuse(color)));
    for (i = 0; i < teeth; i++) {
        gear_angle(i, teeth, ar);
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[2]), r2 * (float) Math.sin(ar[2]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[1]), r2 * (float) Math.sin(ar[1]), -dz)));

        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[1]), r2 * (float) Math.sin(ar[1]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), -dz)));

    }

    // draw outward faces of teeth
    // GL_TRIANGLE_STRIP
    // repeated vertices are necessary to achieve flat shading in ES2
    part = builder.part("gear", GL20.GL_TRIANGLE_STRIP, Usage.Position | Usage.Normal,
            new Material(ColorAttribute.createDiffuse(color)));
    for (i = 0; i < teeth; i++) {
        gear_angle(i, teeth, ar);
        vertTmp1.hasNormal = false;
        if (i > 0) {
            part.index(part
                    .vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), dz)));
            part.index(part
                    .vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), -dz)));
        }

        u = r2 * (float) Math.cos(ar[1]) - r1 * (float) Math.cos(ar[0]);
        v = r2 * (float) Math.sin(ar[1]) - r1 * (float) Math.sin(ar[0]);
        len = (float) Math.sqrt(u * u + v * v);
        u /= len;
        v /= len;

        vertTmp1.setNor(v, -u, 0.0f);
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[0]), r1 * (float) Math.sin(ar[0]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[1]), r2 * (float) Math.sin(ar[1]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[1]), r2 * (float) Math.sin(ar[1]), -dz)));

        vertTmp1.setNor((float) Math.cos(ar[0]), (float) Math.sin(ar[0]), 0.0f);
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[1]), r2 * (float) Math.sin(ar[1]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[1]), r2 * (float) Math.sin(ar[1]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[2]), r2 * (float) Math.sin(ar[2]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[2]), r2 * (float) Math.sin(ar[2]), -dz)));

        u = r1 * (float) Math.cos(ar[3]) - r2 * (float) Math.cos(ar[2]);
        v = r1 * (float) Math.sin(ar[3]) - r2 * (float) Math.sin(ar[2]);

        vertTmp1.setNor(v, -u, 0.0f);
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[2]), r2 * (float) Math.sin(ar[2]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r2 * (float) Math.cos(ar[2]), r2 * (float) Math.sin(ar[2]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), -dz)));

        vertTmp1.setNor((float) Math.cos(ar[0]), (float) Math.sin(ar[0]), 0.0f);
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(ar[3]), r1 * (float) Math.sin(ar[3]), -dz)));
    }
    vertTmp1.hasNormal = false;
    part.index(part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(0.0f), r1 * (float) Math.sin(0.0f), dz)));
    part.index(part.vertex(vertTmp1.setPos(r1 * (float) Math.cos(0.0f), r1 * (float) Math.sin(0.0f), -dz)));

    // draw inside radius cylinder
    // GL_TRIANGLE_STRIP
    part = builder.part("gear", GL20.GL_TRIANGLE_STRIP, Usage.Position | Usage.Normal,
            new Material(ColorAttribute.createDiffuse(color)));
    for (i = 0; i < teeth; i++) {
        gear_angle(i, teeth, ar);
        vertTmp1.setNor(-(float) Math.cos(ar[0]), -(float) Math.sin(ar[0]), 0.0f);
        part.index(
                part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(ar[0]), r0 * (float) Math.sin(ar[0]), -dz)));
        part.index(
                part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(ar[0]), r0 * (float) Math.sin(ar[0]), dz)));
    }
    vertTmp1.setNor(-(float) Math.cos(0.0f), -(float) Math.sin(0.0f), 0.0f);
    part.index(part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(0.0f), r0 * (float) Math.sin(0.0f), -dz)));
    part.index(part.vertex(vertTmp1.setPos(r0 * (float) Math.cos(0.0f), r0 * (float) Math.sin(0.0f), dz)));

    return builder.end();
}

From source file:com.badlogic.gdx.tests.dragome.examples.HelloTriangle.java

License:Apache License

@Override
public void render() {
    Gdx.gl20.glViewport(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight());
    Gdx.gl.glClearColor(0, 0, 0, 1);//from   ww  w . java 2  s  .  c o m
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
    shader.begin();
    mesh.render(shader, GL20.GL_TRIANGLES);
    shader.end();
}

From source file:com.badlogic.gdx.tests.g3d.voxel.VoxelWorld.java

License:Apache License

@Override
public void getRenderables(Array<Renderable> renderables, Pool<Renderable> pool) {
    renderedChunks = 0;// www.j av a2s.  c o  m
    for (int i = 0; i < chunks.length; i++) {
        VoxelChunk chunk = chunks[i];
        Mesh mesh = meshes[i];
        if (dirty[i]) {
            int numVerts = chunk.calculateVertices(vertices);
            numVertices[i] = numVerts / 4 * 6;
            mesh.setVertices(vertices, 0, numVerts * VoxelChunk.VERTEX_SIZE);
            dirty[i] = false;
        }
        if (numVertices[i] == 0)
            continue;
        Renderable renderable = pool.obtain();
        renderable.material = materials[i];
        renderable.mesh = mesh;
        renderable.meshPartOffset = 0;
        renderable.meshPartSize = numVertices[i];
        renderable.primitiveType = GL20.GL_TRIANGLES;
        renderables.add(renderable);
        renderedChunks++;
    }
}

From source file:com.badlogic.gdx.tests.gles2.HelloTriangle.java

License:Apache License

@Override
public void render() {
    Gdx.gl20.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
    shader.begin();//  w w w . j a v  a 2s. c om
    mesh.render(shader, GL20.GL_TRIANGLES);
    shader.end();
}

From source file:com.badlogic.gdx.tests.gles2.MipMap2D.java

License:Apache License

public void render() {
    Gdx.gl20.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);

    Gdx.gl20.glActiveTexture(GL20.GL_TEXTURE0);
    texture.bind();/*from ww  w .  ja  v a  2  s.  co m*/
    shader.begin();
    shader.setUniformf("s_texture", 0);

    Gdx.gl20.glTexParameteri(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_MIN_FILTER, GL20.GL_NEAREST);
    shader.setUniformf("u_offset", -0.6f);
    mesh.render(shader, GL20.GL_TRIANGLES);

    Gdx.gl20.glTexParameteri(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_MIN_FILTER, GL20.GL_LINEAR_MIPMAP_LINEAR);
    shader.setUniformf("u_offset", 0.6f);
    mesh.render(shader, GL20.GL_TRIANGLES);

    shader.end();
}