1 /******************************************************************************* 2 * Copyright 2011 See AUTHORS file. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 ******************************************************************************/ 16 17 package com.badlogic.gdx.tests; 18 19 import com.badlogic.gdx.Gdx; 20 import com.badlogic.gdx.Input.Keys; 21 import com.badlogic.gdx.graphics.Color; 22 import com.badlogic.gdx.graphics.GL20; 23 import com.badlogic.gdx.graphics.PerspectiveCamera; 24 import com.badlogic.gdx.graphics.g2d.BitmapFont; 25 import com.badlogic.gdx.graphics.g2d.SpriteBatch; 26 import com.badlogic.gdx.graphics.glutils.ShapeRenderer; 27 import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; 28 import com.badlogic.gdx.math.MathUtils; 29 import com.badlogic.gdx.tests.utils.GdxTest; 30 import com.badlogic.gdx.tests.utils.PerspectiveCamController; 31 32 public class ShapeRendererTest extends GdxTest { 33 34 ShapeRenderer renderer; 35 PerspectiveCamera cam; 36 PerspectiveCamController controller; 37 SpriteBatch batch; 38 BitmapFont font; 39 create()40 public void create () { 41 renderer = new ShapeRenderer(); 42 cam = new PerspectiveCamera(47, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 43 cam.position.set(0, 0, 2); 44 cam.near = 0.1f; 45 controller = new PerspectiveCamController(cam); 46 Gdx.input.setInputProcessor(controller); 47 batch = new SpriteBatch(); 48 font = new BitmapFont(Gdx.files.internal("data/arial-15.fnt"), false); 49 } 50 render()51 public void render () { 52 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 53 Gdx.gl.glEnable(GL20.GL_DEPTH_TEST); 54 cam.update(); 55 renderer.setProjectionMatrix(cam.combined); 56 renderer.identity(); 57 renderer.rotate(0, 1, 0, 20); 58 renderer.translate(-0.5f, -0.5f, 0); 59 60 MathUtils.random.setSeed(0); 61 62 renderer.begin(ShapeType.Point); 63 64 renderer.setColor(Color.PINK); 65 for (int i = 0; i < 100; i++) 66 renderer.point(MathUtils.random(0.0f, 1.0f), MathUtils.random(0.0f, 1.0f), 0); 67 68 renderer.end(); 69 70 if (Gdx.input.isKeyPressed(Keys.F)) { 71 renderer.begin(ShapeType.Filled); 72 73 renderer.setColor(Color.RED); 74 renderer.rect(0, 0, 1, 1); 75 76 renderer.setColor(Color.BLUE); 77 renderer.circle(0.2f, 0.2f, 0.5f, 40); 78 79 renderer.setColor(Color.WHITE); 80 renderer.box(0.1f, 0.1f, 0.1f, 0.3f, 0.25f, 0.1f); 81 82 renderer.setColor(Color.GREEN); 83 renderer.cone(0.6f, 0.6f, 0, 0.3f, 0.75f, 20); 84 85 renderer.setColor(Color.MAGENTA); 86 renderer.triangle(-0.1f, 0.1f, -0.6f, -0.1f, -0.3f, 0.5f); 87 88 renderer.setColor(Color.GOLD); 89 renderer.ellipse(0.7f, -0.1f, 0.3f, 0.1f, 45f, 40); 90 renderer.ellipse(0.7f, -0.1f, 0.3f, 0.1f, 135f); 91 92 renderer.end(); 93 } else { 94 renderer.begin(ShapeType.Line); 95 96 renderer.setColor(Color.RED); 97 renderer.rect(0, 0, 1, 1); 98 99 renderer.setColor(Color.BLUE); 100 renderer.circle(0.2f, 0.2f, 0.5f, 40); 101 102 renderer.setColor(Color.YELLOW); 103 renderer.line(0, 0, 1, 1); 104 105 renderer.setColor(Color.WHITE); 106 renderer.box(0.1f, 0.1f, 0.1f, 0.3f, 0.25f, 0.1f); 107 108 renderer.setColor(Color.GREEN); 109 renderer.cone(0.6f, 0.6f, 0, 0.3f, 0.75f, 20); 110 111 renderer.setColor(Color.MAGENTA); 112 renderer.triangle(-0.1f, 0.1f, -0.6f, -0.1f, -0.3f, 0.5f); 113 114 renderer.setColor(Color.CYAN); 115 renderer.curve(0.0f, 0.25f, 0.2f, 0.3f, 0.3f, 0.6f, 0.1f, 0.5f, 30); 116 117 renderer.setColor(Color.GOLD); 118 renderer.ellipse(0.7f, -0.1f, 0.3f, 0.1f, 45f, 40); 119 renderer.ellipse(0.7f, -0.1f, 0.3f, 0.1f, 135f); 120 121 renderer.end(); 122 } 123 124 batch.begin(); 125 font.draw(batch, "fps: " + Gdx.graphics.getFramesPerSecond(), 0, 20); 126 batch.end(); 127 } 128 129 @Override dispose()130 public void dispose () { 131 batch.dispose(); 132 font.dispose(); 133 renderer.dispose(); 134 } 135 } 136