OSDN Git Service

Add BaseShaderProvider.
authorXoppa <contact@xoppa.nl>
Mon, 1 Apr 2013 18:54:33 +0000 (20:54 +0200)
committerXoppa <contact@xoppa.nl>
Mon, 1 Apr 2013 18:54:33 +0000 (20:54 +0200)
gdx/src/com/badlogic/gdx/graphics/g3d/utils/BaseShaderProvider.java [new file with mode: 0644]
gdx/src/com/badlogic/gdx/graphics/g3d/utils/DefaultShaderProvider.java

diff --git a/gdx/src/com/badlogic/gdx/graphics/g3d/utils/BaseShaderProvider.java b/gdx/src/com/badlogic/gdx/graphics/g3d/utils/BaseShaderProvider.java
new file mode 100644 (file)
index 0000000..56a1d4b
--- /dev/null
@@ -0,0 +1,34 @@
+package com.badlogic.gdx.graphics.g3d.utils;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.g3d.Renderable;
+import com.badlogic.gdx.graphics.g3d.Shader;
+import com.badlogic.gdx.utils.Array;
+
+public abstract class BaseShaderProvider implements ShaderProvider {
+       protected Array<Shader> shaders = new Array<Shader>();
+       
+       @Override
+       public Shader getShader (Renderable renderable) {
+               Shader suggestedShader = renderable.shader;
+               if (suggestedShader != null && suggestedShader.canRender(renderable))
+                       return suggestedShader;
+               for (int i = 0; i < shaders.size; i++) {
+                       final Shader shader = shaders.get(i);
+                       if (shader.canRender(renderable))
+                               return shader;
+               }
+               final Shader result = createShader(renderable);
+               shaders.add(result);
+               return result;
+       }
+       
+       protected abstract Shader createShader(final Renderable renderable);
+
+       @Override
+       public void dispose () {
+               for(Shader shader: shaders) {
+                       shader.dispose();
+               }
+       }
+}
\ No newline at end of file
index 8ea7ac6..5e50a26 100644 (file)
@@ -8,35 +8,12 @@ import com.badlogic.gdx.graphics.g3d.test.GLES10Shader;
 import com.badlogic.gdx.graphics.g3d.test.TestShader;
 import com.badlogic.gdx.utils.Array;
 
-public class DefaultShaderProvider implements ShaderProvider {
-       protected Array<Shader> shaders = new Array<Shader>();
-       
+public class DefaultShaderProvider extends BaseShaderProvider {        
        @Override
-       public Shader getShader (Renderable renderable) {
-               Shader suggestedShader = renderable.shader;
-               if (suggestedShader != null && suggestedShader.canRender(renderable))
-                       return suggestedShader;
-               for (int i = 0; i < shaders.size; i++) {
-                       final Shader shader = shaders.get(i);
-                       if (shader.canRender(renderable))
-                               return shader;
-               }
-               final Shader result = createShader(renderable.material);
-               shaders.add(result);
-               return result;
-       }
-       
-       protected Shader createShader(final Material material) {
+       protected Shader createShader(final Renderable renderable) {
                Gdx.app.log("DefaultShaderProvider", "Creating new shader");
                if (Gdx.graphics.isGL20Available())
-                       return new TestShader(material);
+                       return new TestShader(renderable.material);
                return new GLES10Shader();
        }
-
-       @Override
-       public void dispose () {
-               for(Shader shader: shaders) {
-                       shader.dispose();
-               }
-       }
 }