Rev 1737 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package com.gebauz.bauzoid2.graphics.shader;
import com.badlogic.gdx.Gdx;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* Created by cchiu on 05.01.2015.
*/
public class ShaderLibrary
{
// Constants========================================================================================
// Embedded Types===================================================================================
public class ShaderInfo
{
private ShaderProgram mShader =
null;
private String mType =
null;
private String mFilename =
null;
public ShaderInfo
(String filename,
String type, ShaderProgram shader
)
{
mFilename = filename
;
mType = type
;
mShader = shader
;
}
public void dispose
()
{
if (mShader
!=
null)
{
mShader.
dispose();
mShader =
null;
}
}
public String getType
() { return mType
; }
public ShaderProgram getShader
() { return mShader
; }
}
// Fields===========================================================================================
private ArrayList<ShaderInfo
> mShaderInfos =
new ArrayList<ShaderInfo
>();
// Methods==========================================================================================
public ShaderLibrary
()
{
}
public void init
()
{
}
public void exit
()
{
for (int i =
0; i
< mShaderInfos.
size(); i++
)
{
ShaderInfo info = mShaderInfos.
get(i
);
info.
dispose();
}
mShaderInfos.
clear();
}
/** Filename without extension. */
public ShaderProgram createShader
(String filename,
String type
)
{
ShaderProgram result = findShader
(type
);
if (result
!=
null)
return result
;
result = ShaderUtil.
createShaderFromFile(Gdx.
files.
internal("bauzoid/shaders/" + filename +
".vert"),
Gdx.
files.
internal("bauzoid/shaders/" + filename +
".frag"));
mShaderInfos.
add(new ShaderInfo
(filename, type, result
));
return result
;
}
public ShaderProgram findShader
(String type
)
{
for (int i =
0; i
< mShaderInfos.
size(); i++
)
{
ShaderInfo info = mShaderInfos.
get(i
);
if (info.
getType().
equals(type
))
return info.
getShader();
}
return null;
}
// Getters/Setters==================================================================================
public int getNumShaders
() { return mShaderInfos.
size(); }
public ShaderProgram getShader
(int index
) { return mShaderInfos.
get(index
).
getShader(); }
}