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:com.mbrlabs.mundus.commons.g3d.MG3dModelLoader.java

License:Apache License

private int parseType(String type) {
    if (type.equals("TRIANGLES")) {
        return GL20.GL_TRIANGLES;
    } else if (type.equals("LINES")) {
        return GL20.GL_LINES;
    } else if (type.equals("POINTS")) {
        return GL20.GL_POINTS;
    } else if (type.equals("TRIANGLE_STRIP")) {
        return GL20.GL_TRIANGLE_STRIP;
    } else if (type.equals("LINE_STRIP")) {
        return GL20.GL_LINE_STRIP;
    } else {// w ww .ja v  a 2  s .  c om
        throw new GdxRuntimeException("Unknown primitive type '" + type
                + "', should be one of triangle, trianglestrip, line, linestrip, lineloop or point");
    }
}

From source file:com.mbrlabs.mundus.commons.terrain.Terrain.java

License:Apache License

public void init() {
    final int numVertices = this.vertexResolution * vertexResolution;
    final int numIndices = (this.vertexResolution - 1) * (vertexResolution - 1) * 6;

    mesh = new Mesh(true, numVertices, numIndices, attribs);
    this.vertices = new float[numVertices * stride];
    mesh.setIndices(buildIndices());//from   w w w  . jav a 2  s.c  o  m
    buildVertices();
    mesh.setVertices(vertices);

    MeshPart meshPart = new MeshPart(null, mesh, 0, numIndices, GL20.GL_TRIANGLES);
    meshPart.update();
    ModelBuilder mb = new ModelBuilder();
    mb.begin();
    mb.part(meshPart, material);
    model = mb.end();
    modelInstance = new ModelInstance(model);
    modelInstance.transform = transform;
}

From source file:com.mbrlabs.mundus.editor.tools.TranslateTool.java

License:Apache License

public TranslateTool(ProjectManager projectManager, GameObjectPicker goPicker, ToolHandlePicker handlePicker,
        ModelBatch batch, CommandHistory history) {

    super(projectManager, goPicker, handlePicker, batch, history);

    ModelBuilder modelBuilder = new ModelBuilder();

    Model xHandleModel = modelBuilder.createArrow(0, 0, 0, 1, 0, 0, ARROW_CAP_SIZE, ARROW_THIKNESS,
            ARROW_DIVISIONS, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(COLOR_X)),
            VertexAttributes.Usage.Position);
    Model yHandleModel = modelBuilder.createArrow(0, 0, 0, 0, 1, 0, ARROW_CAP_SIZE, ARROW_THIKNESS,
            ARROW_DIVISIONS, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(COLOR_Y)),
            VertexAttributes.Usage.Position);
    Model zHandleModel = modelBuilder.createArrow(0, 0, 0, 0, 0, 1, ARROW_CAP_SIZE, ARROW_THIKNESS,
            ARROW_DIVISIONS, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(COLOR_Z)),
            VertexAttributes.Usage.Position);
    Model xzPlaneHandleModel = modelBuilder.createSphere(1, 1, 1, 20, 20,
            new Material(ColorAttribute.createDiffuse(COLOR_XZ)), VertexAttributes.Usage.Position);

    xHandle = new TranslateHandle(X_HANDLE_ID, xHandleModel);
    yHandle = new TranslateHandle(Y_HANDLE_ID, yHandleModel);
    zHandle = new TranslateHandle(Z_HANDLE_ID, zHandleModel);
    xzPlaneHandle = new TranslateHandle(XZ_HANDLE_ID, xzPlaneHandleModel);
    handles = new TranslateHandle[] { xHandle, yHandle, zHandle, xzPlaneHandle };

    gameObjectModifiedEvent = new GameObjectModifiedEvent(null);
}

From source file:com.mbrlabs.mundus.editor.utils.UsefulMeshs.java

License:Apache License

public static Model createArrowStub(Material mat, Vector3 from, Vector3 to) {
    ModelBuilder modelBuilder = new ModelBuilder();
    modelBuilder.begin();/*from   w  ww .  j  a  v  a 2s .com*/
    MeshPartBuilder meshBuilder;
    // line
    meshBuilder = modelBuilder.part("line", GL20.GL_LINES,
            VertexAttributes.Usage.Position | VertexAttributes.Usage.ColorUnpacked, mat);
    meshBuilder.line(from.x, from.y, from.z, to.x, to.y, to.z);
    // stub
    Node node = modelBuilder.node();
    node.translation.set(to.x, to.y, to.z);
    meshBuilder = modelBuilder.part("stub", GL20.GL_TRIANGLES, Usage.Position | Usage.Normal, mat);
    BoxShapeBuilder.build(meshBuilder, 2, 2, 2);
    return modelBuilder.end();
}

From source file:com.mbrlabs.mundus.editor.utils.UsefulMeshs.java

License:Apache License

public static Model torus(Material mat, float width, float height, int divisionsU, int divisionsV) {

    ModelBuilder modelBuilder = new ModelBuilder();
    modelBuilder.begin();//ww w  . j  a  v a 2s . com
    MeshPartBuilder builder = modelBuilder.part("torus", GL20.GL_TRIANGLES, VertexAttributes.Usage.Position,
            mat);
    // builder.setColor(Color.LIGHT_GRAY);

    MeshPartBuilder.VertexInfo curr1 = v0.set(null, null, null, null);
    curr1.hasUV = curr1.hasNormal = false;
    curr1.hasPosition = true;

    MeshPartBuilder.VertexInfo curr2 = v1.set(null, null, null, null);
    curr2.hasUV = curr2.hasNormal = false;
    curr2.hasPosition = true;
    short i1, i2, i3 = 0, i4 = 0;

    int i, j, k;
    double s, t, twopi;
    twopi = 2 * Math.PI;

    for (i = 0; i < divisionsV; i++) {
        for (j = 0; j <= divisionsU; j++) {
            for (k = 1; k >= 0; k--) {
                s = (i + k) % divisionsV + 0.5;
                t = j % divisionsU;

                curr1.position.set(
                        (float) ((width + height * Math.cos(s * twopi / divisionsV))
                                * Math.cos(t * twopi / divisionsU)),
                        (float) ((width + height * Math.cos(s * twopi / divisionsV))
                                * Math.sin(t * twopi / divisionsU)),
                        (float) (height * Math.sin(s * twopi / divisionsV)));
                k--;
                s = (i + k) % divisionsV + 0.5;
                curr2.position.set(
                        (float) ((width + height * Math.cos(s * twopi / divisionsV))
                                * Math.cos(t * twopi / divisionsU)),
                        (float) ((width + height * Math.cos(s * twopi / divisionsV))
                                * Math.sin(t * twopi / divisionsU)),
                        (float) (height * Math.sin(s * twopi / divisionsV)));
                // curr2.uv.set((float) s, 0);
                i1 = builder.vertex(curr1);
                i2 = builder.vertex(curr2);
                builder.rect(i4, i2, i1, i3);
                i4 = i2;
                i3 = i1;
            }
        }
    }

    return modelBuilder.end();
}

From source file:com.mbrlabs.mundus.tools.TranslateTool.java

License:Apache License

public TranslateTool(ProjectManager projectManager, GameObjectPicker goPicker, ToolHandlePicker handlePicker,
        Shader shader, ModelBatch batch, CommandHistory history) {

    super(projectManager, goPicker, handlePicker, shader, batch, history);

    ModelBuilder modelBuilder = new ModelBuilder();

    Model xHandleModel = modelBuilder.createArrow(0, 0, 0, 1, 0, 0, ARROW_CAP_SIZE, ARROW_THIKNESS,
            ARROW_DIVISIONS, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(COLOR_X)),
            VertexAttributes.Usage.Position);
    Model yHandleModel = modelBuilder.createArrow(0, 0, 0, 0, 1, 0, ARROW_CAP_SIZE, ARROW_THIKNESS,
            ARROW_DIVISIONS, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(COLOR_Y)),
            VertexAttributes.Usage.Position);
    Model zHandleModel = modelBuilder.createArrow(0, 0, 0, 0, 0, 1, ARROW_CAP_SIZE, ARROW_THIKNESS,
            ARROW_DIVISIONS, GL20.GL_TRIANGLES, new Material(ColorAttribute.createDiffuse(COLOR_Z)),
            VertexAttributes.Usage.Position);
    Model xzPlaneHandleModel = modelBuilder.createSphere(1, 1, 1, 20, 20,
            new Material(ColorAttribute.createDiffuse(COLOR_XZ)), VertexAttributes.Usage.Position);

    xHandle = new TranslateHandle(X_HANDLE_ID, xHandleModel);
    yHandle = new TranslateHandle(Y_HANDLE_ID, yHandleModel);
    zHandle = new TranslateHandle(Z_HANDLE_ID, zHandleModel);
    xzPlaneHandle = new TranslateHandle(XZ_HANDLE_ID, xzPlaneHandleModel);
    handles = new TranslateHandle[] { xHandle, yHandle, zHandle, xzPlaneHandle };

    gameObjectModifiedEvent = new GameObjectModifiedEvent();
}

From source file:com.mbrlabs.mundus.utils.Compass.java

License:Apache License

public Compass(PerspectiveCamera worldCam) {
    this.worldCam = worldCam;
    this.ownCam = new PerspectiveCamera();

    ModelBuilder modelBuilder = new ModelBuilder();
    modelBuilder.begin();/* ww w  .  j av  a  2 s . c  o m*/

    MeshPartBuilder builder = modelBuilder.part("compass", GL20.GL_TRIANGLES,
            VertexAttributes.Usage.Position | VertexAttributes.Usage.ColorUnpacked, new Material());
    builder.setColor(Color.RED);
    builder.arrow(0, 0, 0, ARROW_LENGTH, 0, 0, ARROW_CAP_SIZE, ARROW_THIKNESS, ARROW_DIVISIONS);
    builder.setColor(Color.GREEN);
    builder.arrow(0, 0, 0, 0, ARROW_LENGTH, 0, ARROW_CAP_SIZE, ARROW_THIKNESS, ARROW_DIVISIONS);
    builder.setColor(Color.BLUE);
    builder.arrow(0, 0, 0, 0, 0, ARROW_LENGTH, ARROW_CAP_SIZE, ARROW_THIKNESS, ARROW_DIVISIONS);
    compassModel = modelBuilder.end();
    compassInstance = new ModelInstance(compassModel);

    // translate to top left corner
    compassInstance.transform.translate(0.93f, 0.94f, 0);
}

From source file:com.mygdx.game.simulation.Simulation.java

License:Apache License

private void populate() {
    ObjLoader objLoader = new ObjLoader();

    for (int i = 0; i < MAX_SHIPS; i++) {
        shipModels[i] = objLoader.loadModel(Gdx.files.internal("data/ship.obj"));
    }// w  ww . jav  a 2s .  c  o  m
    invaderModel = objLoader.loadModel(Gdx.files.internal("data/invader.obj"));
    blockModel = objLoader.loadModel(Gdx.files.internal("data/block.obj"));
    shotModel = objLoader.loadModel(Gdx.files.internal("data/shot.obj"));

    final Texture shipTexture = new Texture(Gdx.files.internal("data/ship.png"), Format.RGB565, true);
    shipTexture.setFilter(TextureFilter.MipMap, TextureFilter.Linear);
    final Texture shipTexture2 = new Texture(Gdx.files.internal("data/ship.png"), Format.RGB565, true);
    shipTexture2.setFilter(TextureFilter.MipMap, TextureFilter.Linear);
    final Texture invaderTexture = new Texture(Gdx.files.internal("data/invader.png"), Format.RGB565, true);
    invaderTexture.setFilter(TextureFilter.MipMap, TextureFilter.Linear);

    for (int i = 0; i < MAX_SHIPS; i++) {
        shipModels[i].materials.get(0).set(TextureAttribute.createDiffuse(shipTexture));
    }
    invaderModel.materials.get(0).set(TextureAttribute.createDiffuse(invaderTexture));

    ((ColorAttribute) blockModel.materials.get(0).get(ColorAttribute.Diffuse)).color.set(0, 0, 1, 0.5f);
    blockModel.materials.get(0).set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA));

    shotModel.materials.get(0).set(ColorAttribute.createDiffuse(1, 1, 0, 1f));

    final Texture explosionTexture = new Texture(Gdx.files.internal("data/explode.png"), Format.RGBA4444, true);
    explosionTexture.setFilter(TextureFilter.MipMap, TextureFilter.Linear);

    final Mesh explosionMesh = new Mesh(true, 4 * 16, 6 * 16,
            new VertexAttribute(Usage.Position, 3, "a_position"),
            new VertexAttribute(Usage.TextureCoordinates, 2, "a_texCoord0"));

    float[] vertices = new float[4 * 16 * (3 + 2)];
    short[] indices = new short[6 * 16];
    int idx = 0;
    int index = 0;
    for (int row = 0; row < 4; row++) {
        for (int column = 0; column < 4; column++) {
            vertices[idx++] = 1;
            vertices[idx++] = 1;
            vertices[idx++] = 0;
            vertices[idx++] = 0.25f + column * 0.25f;
            vertices[idx++] = 0 + row * 0.25f;

            vertices[idx++] = -1;
            vertices[idx++] = 1;
            vertices[idx++] = 0;
            vertices[idx++] = 0 + column * 0.25f;
            vertices[idx++] = 0 + row * 0.25f;

            vertices[idx++] = -1;
            vertices[idx++] = -1;
            vertices[idx++] = 0;
            vertices[idx++] = 0f + column * 0.25f;
            vertices[idx++] = 0.25f + row * 0.25f;

            vertices[idx++] = 1;
            vertices[idx++] = -1;
            vertices[idx++] = 0;
            vertices[idx++] = 0.25f + column * 0.25f;
            vertices[idx++] = 0.25f + row * 0.25f;

            final int t = (4 * row + column) * 4;
            indices[index++] = (short) (t);
            indices[index++] = (short) (t + 1);
            indices[index++] = (short) (t + 2);
            indices[index++] = (short) (t);
            indices[index++] = (short) (t + 2);
            indices[index++] = (short) (t + 3);
        }
    }

    explosionMesh.setVertices(vertices);
    explosionMesh.setIndices(indices);

    Material explosionMeshMaterial = new Material(
            new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA),
            TextureAttribute.createDiffuse(explosionTexture));
    explosionModel = new Model();
    MeshPart meshPart = new MeshPart();
    meshPart.id = "part1";
    meshPart.offset = 0;
    meshPart.size = explosionMesh.getNumIndices();
    meshPart.primitiveType = GL20.GL_TRIANGLES;
    meshPart.mesh = explosionMesh;

    NodePart partMaterial = new NodePart();
    partMaterial.material = explosionMeshMaterial;
    partMaterial.meshPart = meshPart;
    Node node = new Node();
    node.id = "node1";
    node.parts.add(partMaterial);

    explosionModel.meshes.add(explosionMesh);
    explosionModel.materials.add(explosionMeshMaterial);
    explosionModel.nodes.add(node);
    explosionModel.meshParts.add(meshPart);
    explosionModel.manageDisposable(explosionMesh);

    for (int i = 0; i < MAX_SHIPS; i++) {
        ships[i] = new Ship(shipModels[i]);
        ships[i].transform.rotate(1, 0, 0, 180);
    }

    for (int row = 0; row < 4; row++) {
        for (int column = 0; column < 8; column++) {
            Invader invader = new Invader(invaderModel, -PLAYFIELD_MAX_X / 2 + column * 2f, 0,
                    PLAYFIELD_MIN_Z + row * 2f);
            invaders.add(invader);
        }
    }

    for (int shield = 0; shield < 3; shield++) {
        blocks.add(new Block(blockModel, -10 + shield * 10 - 1, 0, -2));
        blocks.add(new Block(blockModel, -10 + shield * 10 - 1, 0, -3));
        blocks.add(new Block(blockModel, -10 + shield * 10 + 0, 0, -3));
        blocks.add(new Block(blockModel, -10 + shield * 10 + 1, 0, -3));
        blocks.add(new Block(blockModel, -10 + shield * 10 + 1, 0, -2));
    }
}

From source file:com.softwaresemantics.diyglsllwp.DIYGslSurface.java

License:Creative Commons License

/**
 * render shader on mesh, update shader vars for frame
 *//*from   ww w. j av  a2  s . c  o m*/
private void renderShaderonMesh() {

    shader.begin();

    shader.setUniformf("resolution", renderSurfaceWidth, renderSurfaceHeight);

    time = (float) ((System.currentTimeMillis() - timeOrigin) * speedFactor / 1000.0d);

    // Process optional time loop
    if (timeLoop && (time > timeLoopPeriod)) {
        timeOrigin = timeOrigin + (timeLoopPeriod * 1000);
    }

    shader.setUniformf("time", time);
    shader.setUniformf("mouse", mouseCursorX, mouseCursorY);

    // render surface as mesh
    mesh.render(shader, GL20.GL_TRIANGLES);

    shader.end();

}

From source file:com.watabou.noosa.NoosaScript.java

License:Open Source License

public void drawElements(FloatBuffer vertices, ShortBuffer indices, int size) {

    vertices.position(0);/*from   ww  w  .jav a  2  s  .c o  m*/
    aXY.vertexPointer(2, 4, vertices);

    vertices.position(2);
    aUV.vertexPointer(2, 4, vertices);

    Gdx.gl.glDrawElements(GL20.GL_TRIANGLES, size, GL20.GL_UNSIGNED_SHORT, indices);

}