58 |
58 |
|
59 |
59 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
60 |
60 |
// Must be called from a thread holding OpenGL Context
|
|
61 |
// Watch out - this has the side-effect of binding a Texture and a Framebuffer!
|
61 |
62 |
|
62 |
63 |
void create()
|
63 |
64 |
{
|
... | ... | |
125 |
126 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
126 |
127 |
// Must be called from a thread holding OpenGL Context
|
127 |
128 |
|
128 |
|
private void delete()
|
|
129 |
void delete()
|
129 |
130 |
{
|
130 |
131 |
if( mColorH[0]>=0 )
|
131 |
132 |
{
|
... | ... | |
368 |
369 |
* <p>
|
369 |
370 |
* Must be called from a thread holding OpenGL Context.
|
370 |
371 |
*
|
371 |
|
* @param tex input Texture to use.
|
|
372 |
* @param ren input Renderable to use.
|
372 |
373 |
* @param mesh Class descendant from MeshObject
|
373 |
374 |
* @param effects The DistortedEffects to use when rendering
|
374 |
375 |
* @param time Current time, in milliseconds.
|
375 |
376 |
*/
|
376 |
|
public void renderTo(DistortedTexture tex, MeshObject mesh, DistortedEffects effects, long time)
|
|
377 |
public void renderTo(DistortedRenderable ren, MeshObject mesh, DistortedEffects effects, long time)
|
377 |
378 |
{
|
378 |
|
tex.create();
|
|
379 |
ren.create(); // Watch out - this needs to be before
|
|
380 |
create(); // the 'setAsInput' because this has side-effects!
|
379 |
381 |
|
380 |
|
if( tex.setAsInput() )
|
|
382 |
if( ren.setAsInput() )
|
381 |
383 |
{
|
382 |
384 |
DistortedFramebuffer.deleteAllMarked();
|
383 |
385 |
DistortedTexture.deleteAllMarked();
|
384 |
|
create();
|
385 |
|
effects.drawPriv(tex.getWidth()/2.0f, tex.getHeight()/2.0f, mesh, this, time);
|
386 |
|
}
|
387 |
|
}
|
388 |
|
|
389 |
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
390 |
|
/**
|
391 |
|
* Draw the (framebuffer,mesh,effects) object to the Framebuffer.
|
392 |
|
* <p>
|
393 |
|
* Must be called from a thread holding OpenGL Context.
|
394 |
|
*
|
395 |
|
* @param fbo The Framebuffer (previously created with the first constructor, drawing FROM the screen
|
396 |
|
* is unsupported!) whose COLOR attachment 0 will be used as input texture.
|
397 |
|
* Please note that rendering from an FBO to itself is unsupported by OpenGL!
|
398 |
|
* @param mesh Class descendant from MeshObject
|
399 |
|
* @param effects The DistortedEffects to use when rendering
|
400 |
|
* @param time Current time, in milliseconds.
|
401 |
|
*/
|
402 |
|
public void renderTo(DistortedFramebuffer fbo, MeshObject mesh, DistortedEffects effects, long time)
|
403 |
|
{
|
404 |
|
fbo.create();
|
405 |
|
|
406 |
|
if( fbo.setAsInput() )
|
407 |
|
{
|
408 |
|
DistortedFramebuffer.deleteAllMarked();
|
409 |
|
DistortedTexture.deleteAllMarked();
|
410 |
|
create();
|
411 |
|
effects.drawPriv(fbo.getWidth()/2.0f, fbo.getHeight()/2.0f, mesh, this, time);
|
|
386 |
effects.drawPriv(ren.getWidth()/2.0f, ren.getHeight()/2.0f, mesh, this, time);
|
412 |
387 |
}
|
413 |
388 |
}
|
414 |
389 |
|
... | ... | |
435 |
410 |
*/
|
436 |
411 |
public void markForDeletion()
|
437 |
412 |
{
|
438 |
|
//android.util.Log.e("FBO", "marking for deletion ("+mWidth+","+mHeight+") "+mFBOH[0]);
|
439 |
|
|
440 |
413 |
mListMarked = true;
|
441 |
414 |
mMarked = true;
|
442 |
415 |
}
|
progress with DistortedRenderable