Revision 47d838ca
Added by Leszek Koltunski over 7 years ago
src/main/java/org/distorted/library/program/DistortedProgram.java | ||
---|---|---|
216 | 216 |
|
217 | 217 |
if (shaderHandle != 0) |
218 | 218 |
{ |
219 |
GLES20.glShaderSource(shaderHandle, "#version 100 \n"+ generateShaderHeader(shaderType) + shaderSource);
|
|
219 |
GLES20.glShaderSource(shaderHandle, shaderSource); |
|
220 | 220 |
GLES20.glCompileShader(shaderHandle); |
221 | 221 |
final int[] compileStatus = new int[1]; |
222 | 222 |
GLES20.glGetShaderiv(shaderHandle, GLES20.GL_COMPILE_STATUS, compileStatus, 0); |
... | ... | |
243 | 243 |
return shaderHandle; |
244 | 244 |
} |
245 | 245 |
|
246 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
247 |
|
|
248 |
private static String generateShaderHeader(final int type) |
|
249 |
{ |
|
250 |
String header=""; |
|
251 |
|
|
252 |
switch(type) |
|
253 |
{ |
|
254 |
case GLES20.GL_VERTEX_SHADER : header += ("#define NUM_VERTEX " + DistortedEffects.getMaxVertex()+"\n"); |
|
255 |
|
|
256 |
for(EffectNames name: EffectNames.values() ) |
|
257 |
{ |
|
258 |
if( name.getType()== EffectTypes.VERTEX) |
|
259 |
header += ("#define "+name.name()+" "+name.ordinal()+"\n"); |
|
260 |
} |
|
261 |
break; |
|
262 |
case GLES20.GL_FRAGMENT_SHADER: header += ("#define NUM_FRAGMENT "+ DistortedEffects.getMaxFragment()+"\n"); |
|
263 |
|
|
264 |
for(EffectNames name: EffectNames.values() ) |
|
265 |
{ |
|
266 |
if( name.getType()==EffectTypes.FRAGMENT) |
|
267 |
header += ("#define "+name.name()+" "+name.ordinal()+"\n"); |
|
268 |
} |
|
269 |
break; |
|
270 |
} |
|
271 |
|
|
272 |
//android.util.Log.d("program",""+header); |
|
273 |
|
|
274 |
return header; |
|
275 |
} |
|
276 |
|
|
277 | 246 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
278 | 247 |
// PUBLIC API |
279 | 248 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
291 | 260 |
* @throws LinkingException |
292 | 261 |
*/ |
293 | 262 |
|
294 |
public DistortedProgram(final InputStream vertex, final InputStream fragment) |
|
263 |
public DistortedProgram(final InputStream vertex, final InputStream fragment, final String vertexHeader, final String fragmentHeader)
|
|
295 | 264 |
throws FragmentCompilationException,VertexCompilationException,VertexUniformsException,FragmentUniformsException,LinkingException |
296 | 265 |
{ |
297 | 266 |
mNumAttributes = 0; |
... | ... | |
301 | 270 |
|
302 | 271 |
sanitizeMaxValues(); |
303 | 272 |
|
304 |
final int vertexShaderHandle = compileShader(GLES20.GL_VERTEX_SHADER , vertexShader ); |
|
305 |
final int fragmentShaderHandle = compileShader(GLES20.GL_FRAGMENT_SHADER, fragmentShader); |
|
273 |
final int vertexShaderHandle = compileShader(GLES20.GL_VERTEX_SHADER , vertexHeader + vertexShader );
|
|
274 |
final int fragmentShaderHandle = compileShader(GLES20.GL_FRAGMENT_SHADER, fragmentHeader + fragmentShader);
|
|
306 | 275 |
|
307 | 276 |
mProgramHandle = createAndLinkProgram(vertexShaderHandle, fragmentShaderHandle, mAttributeName); |
308 | 277 |
} |
Also available in: Unified diff
NUM_POSTPROCESS corectly #defined now.