• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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