Revision 8ac0ed3e
Added by Leszek Koltunski over 7 years ago
| src/main/java/org/distorted/library/main/DistortedScreen.java | ||
|---|---|---|
| 55 | 55 |
private static MatrixEffectMove mMoveEffect = new MatrixEffectMove( new Static3D(5,5,0) ); |
| 56 | 56 |
///// END DEBUGGING ////////////////////////// |
| 57 | 57 |
|
| 58 |
private int mCurrFBO, mLastFBO; |
|
| 58 |
private int mCurRenderedFBO; // During the first FBO_QUEUE_SIZE frames, we blit the very first |
|
| 59 |
private int mToBeBlittedFBO; // FBO one we have rendered. Then, we keep blitting the one we |
|
| 60 |
private boolean mFirstCircle; // rendered FBO_QUEUE_SIZE ago. |
|
| 59 | 61 |
|
| 60 | 62 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 61 | 63 |
// PUBLIC API |
| ... | ... | |
| 69 | 71 |
{
|
| 70 | 72 |
super(Distorted.FBO_QUEUE_SIZE,1,BOTH_DEPTH_STENCIL, TYPE_SYST, 1,1); |
| 71 | 73 |
mShowFPS = false; |
| 72 |
mCurrFBO = 0; |
|
| 73 |
mLastFBO = 1; |
|
| 74 |
mCurRenderedFBO = 0; |
|
| 75 |
mToBeBlittedFBO = 0; |
|
| 76 |
mFirstCircle = true; |
|
| 74 | 77 |
} |
| 75 | 78 |
|
| 76 | 79 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 84 | 87 |
*/ |
| 85 | 88 |
public int render(long time) |
| 86 | 89 |
{
|
| 87 |
if( ++mCurrFBO>=Distorted.FBO_QUEUE_SIZE ) mCurrFBO=0; |
|
| 88 |
if( ++mLastFBO>=Distorted.FBO_QUEUE_SIZE ) mLastFBO=0; |
|
| 89 |
|
|
| 90 | 90 |
if( mShowFPS ) |
| 91 | 91 |
{
|
| 92 | 92 |
if( lastTime==0 ) lastTime = time; |
| ... | ... | |
| 107 | 107 |
lastTime = time; |
| 108 | 108 |
} |
| 109 | 109 |
|
| 110 |
int numrender = super.render(time,mCurrFBO);
|
|
| 110 |
int numrender = super.render(time,mCurRenderedFBO);
|
|
| 111 | 111 |
|
| 112 | 112 |
GLES31.glBindFramebuffer(GLES31.GL_FRAMEBUFFER, 0); |
| 113 | 113 |
|
| ... | ... | |
| 116 | 116 |
// make it equal to 3. |
| 117 | 117 |
// This of course introduces a delay and uses more memory, but it does not appear to have any effect |
| 118 | 118 |
// on speed. Maybe a slight positive effect if any! |
| 119 |
setAsInput(mLastFBO,0);
|
|
| 119 |
setAsInput(mToBeBlittedFBO,0);
|
|
| 120 | 120 |
|
| 121 | 121 |
GLES31.glColorMask(true,true,true,true); |
| 122 | 122 |
GLES31.glDepthMask(false); |
| ... | ... | |
| 131 | 131 |
fpsEffects.drawPriv(fpsW / 2.0f, fpsH / 2.0f, fpsMesh, this, time, 0); |
| 132 | 132 |
} |
| 133 | 133 |
|
| 134 |
if( ++mCurRenderedFBO>=Distorted.FBO_QUEUE_SIZE ) |
|
| 135 |
{
|
|
| 136 |
mCurRenderedFBO = 0; |
|
| 137 |
if (mFirstCircle) mFirstCircle = false; |
|
| 138 |
} |
|
| 139 |
if( !mFirstCircle && ++mToBeBlittedFBO>=Distorted.FBO_QUEUE_SIZE ) |
|
| 140 |
{
|
|
| 141 |
mToBeBlittedFBO=0; |
|
| 142 |
} |
|
| 143 |
|
|
| 134 | 144 |
return numrender+1; |
| 135 | 145 |
} |
| 136 | 146 |
|
Also available in: Unified diff
Correct the way we delay FBOs in DistortedScreen.