\r
rgba8888.clear(Color.rgba8888(1, 0, 0, 0.5f));\r
rgba8888.setPixel(16, 16, Color.rgba8888(0, 0, 1, 1));\r
- //if(rgba8888.getPixel(16, 16) != Color.rgba8888(0, 0, 1, 1)) throw new RuntimeException("rgba8888 error");\r
- //if(rgba8888.getPixel(15, 16) != Color.rgba8888(1, 0, 0, 0.5f)) throw new RuntimeException("rgba8888 error");\r
+ if(rgba8888.getPixel(16, 16) != Color.rgba8888(0, 0, 1, 1)) throw new RuntimeException("rgba8888 error");\r
+ if(rgba8888.getPixel(15, 16) != Color.rgba8888(1, 0, 0, 0.5f)) throw new RuntimeException("rgba8888 error");\r
rgba8888.drawLine(0,0,31,31,Color.rgba8888(0, 1, 0, 1));\r
rgba8888.drawRect(10, 10, 5, 7, Color.rgba8888(1, 1, 0, 1));\r
rgba8888.fillRect(20, 10, 5, 7, Color.rgba8888(0, 1, 1, 1));\r
final int RUNS = 1000;\r
long startTime = System.nanoTime(); \r
for(int i = 0; i < RUNS; i++) {\r
- gdxPixmap.clear(0xffffffff);\r
+// gdxPixmap.clear(0xffffffff);\r
gdxPixmap.drawLine((int)(rand.nextFloat()*256), ((int)rand.nextFloat()*256), \r
(int)(rand.nextFloat()*256), ((int)rand.nextFloat()*256), 0xffffffff);\r
gdxPixmap.drawCircle(((int)rand.nextFloat()*256), ((int)rand.nextFloat()*256), ((int)rand.nextFloat() * 128), 0xffffffff);\r
startTime = System.nanoTime(); \r
for(int i = 0; i < RUNS; i++) {\r
pixmap.setColor(1, 1, 1, 1);\r
- pixmap.fill();\r
+// pixmap.fill();\r
pixmap.setColor(1, 1, 1, 1);\r
pixmap.drawLine((int)(rand2.nextFloat()*256), ((int)rand2.nextFloat()*256), \r
(int)(rand2.nextFloat()*256), ((int)rand2.nextFloat()*256));\r
--- /dev/null
+\r
+package com.badlogic.gdx.tests;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import com.badlogic.gdx.Gdx;\r
+import com.badlogic.gdx.graphics.GL10;\r
+import com.badlogic.gdx.graphics.g2d.OrthographicCamera;\r
+import com.badlogic.gdx.graphics.glutils.ImmediateModeRenderer;\r
+import com.badlogic.gdx.math.CatmullRomSpline;\r
+import com.badlogic.gdx.math.Vector2;\r
+import com.badlogic.gdx.math.Vector3;\r
+import com.badlogic.gdx.tests.utils.GdxTest;\r
+\r
+public class SplineTest extends GdxTest {\r
+\r
+ @Override public boolean needsGL20 () {\r
+ return false;\r
+ }\r
+\r
+ final int CONTROL_POINTS = 10;\r
+ OrthographicCamera cam;\r
+ ImmediateModeRenderer renderer;\r
+ CatmullRomSpline spline;\r
+ Vector3[] path;\r
+ \r
+\r
+ @Override public void create () {\r
+ cam = new OrthographicCamera();\r
+ cam.setViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());\r
+ cam.getPosition().set(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2, 0);\r
+ renderer = new ImmediateModeRenderer();\r
+ spline = new CatmullRomSpline();\r
+ float x = 0;\r
+ float y = Gdx.graphics.getHeight() / 2;\r
+ spline.add(new Vector3(x - 50, y, 0));\r
+ for(int i = 0; i < CONTROL_POINTS; i++) {\r
+ spline.add(new Vector3(x, y, 0));\r
+ x += Gdx.graphics.getWidth() / (CONTROL_POINTS - 2);\r
+ }\r
+ spline.add(new Vector3(Gdx.graphics.getWidth() + 50, y, 0));\r
+ path = new Vector3[(CONTROL_POINTS - 2) * 7 - 1];\r
+ for(int i = 0; i < path.length; i++) \r
+ path[i] = new Vector3();\r
+ spline.getPath(path, 5); \r
+ } \r
+ \r
+ @Override public void render () {\r
+ Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); \r
+ cam.setMatrices(); \r
+ \r
+ renderer.begin(GL10.GL_TRIANGLES);\r
+ for(int i = 0; i < path.length - 1; i++) {\r
+ Vector3 point1 = path[i];\r
+ Vector3 point2 = path[i+1];\r
+ renderer.color(1, 1, 1, 1);\r
+ renderer.vertex(point1.x, point1.y, 0);\r
+ renderer.color(1, 1, 1, 1);\r
+ renderer.vertex(point1.x, 0, 0);\r
+ renderer.color(1, 1, 1, 1);\r
+ renderer.vertex(point2.x, point2.y, 0);\r
+ \r
+ renderer.color(1, 1, 1, 1);\r
+ renderer.vertex(point2.x, point2.y, 0);\r
+ renderer.color(1, 1, 1, 1);\r
+ renderer.vertex(point1.x, 0, 0);\r
+ renderer.color(1, 1, 1, 1);\r
+ renderer.vertex(point2.x, 0, 0);\r
+ }\r
+ renderer.end();\r
+ \r
+ Gdx.gl10.glPointSize(4);\r
+ renderer.begin(GL10.GL_POINTS);\r
+ for(int i = 0; i < spline.getControlPoints().size(); i++) {\r
+ Vector3 point = spline.getControlPoints().get(i);\r
+ renderer.color(1, 0, 0, 1);\r
+ renderer.vertex(point.x, point.y, 0);\r
+ }\r
+ renderer.end();\r
+ Gdx.gl10.glPointSize(1);\r
+ \r
+ processInput();\r
+ }\r
+ \r
+ Vector3 point = new Vector3();\r
+ private void processInput() {\r
+ if(Gdx.input.isTouched()) { \r
+ Vector3 nearest = null;\r
+ float nearestDist = Float.MAX_VALUE;\r
+ point.set(cam.getScreenToWorldX(Gdx.input.getX()), \r
+ cam.getScreenToWorldY(Gdx.input.getY()),\r
+ 0); \r
+ \r
+ for(int i = 0; i < spline.getControlPoints().size(); i++) {\r
+ Vector3 controlPoint = spline.getControlPoints().get(i);\r
+ float dist = Math.abs(point.x - controlPoint.x);\r
+ if(dist < nearestDist) {\r
+ nearest = controlPoint;\r
+ nearestDist = dist; \r
+ } \r
+ }\r
+ \r
+ nearest.y += (point.y - nearest.y) * Gdx.graphics.getDeltaTime(); \r
+ spline.getPath(path, 5);\r
+ }\r
+ }\r
+}\r