List of usage examples for com.badlogic.gdx.graphics GL20 GL_TRIANGLES
int GL_TRIANGLES
To view the source code for com.badlogic.gdx.graphics GL20 GL_TRIANGLES.
Click Source Link
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(); }