package loon.opengl.d3d;
import loon.utils.TArray;
public abstract class BaseShaderProvider implements ShaderProvider {
protected TArray<Shader> shaders = new TArray<Shader>();
@Override
public Shader getShader (Renderable renderable) {
Shader suggestedShader = renderable.shader;
if (suggestedShader != null && suggestedShader.canRender(renderable))
return suggestedShader;
for (Shader shader : shaders) {
if (shader.canRender(renderable))
return shader;
}
final Shader shader = createShader(renderable);
shader.init();
shaders.add(shader);
return shader;
}
protected abstract Shader createShader(final Renderable renderable);
@Override
public void close () {
for(Shader shader: shaders) {
shader.close();
}
}
}